image_name = 'cropped_(25, 140, 39, 143)_obj365_val_000000685822.jpg'
start_idx = image_name.find("(")
end_idx = image_name.find(")")
coordinates = image_name.split('_')[1]
file_name_only = image_name[end_idx + 2:]
file_name_only, coordinates
我的输出结果为:
('obj365_val_000000685822.jpg', '(25, 140, 39, 143)')
坐标提取出来的是’(25, 140, 39, 143)',是一个字符串,我们如何将其转为元组?
new_coordinates = tuple(coordinates)
new_coordinates
我们的输出结果为:
('(',
'2',
'5',
',',
' ',
'1',
'4',
'0',
',',
' ',
'3',
'9',
',',
' ',
'1',
'4',
'3',
')')
直接使用tuple()函数将带有括号的字符串转换为元组时,元组的每个元素会被视为一个字符,而不是数字。在上述示例中,coordinates_str中的括号和数字被视为元组的不同元素,而不是整个元组的元素。
如果您确保输入的字符串中没有其他非数字字符,也可以使用字符串切片来手动提取数字,并将它们转换为整数。例如:
new_coordinates = tuple(map(int, coordinates[1:-1].split(',')))
new_coordinates
(25, 140, 39, 143)
我们的输出类型为:
在上述代码中,我们使用字符串切片 [1:-1] 来去掉字符串的括号,然后使用 split(‘,’) 来拆分字符串,并将每个拆分的部分转换为整数。最终得到正确的元组 (25, 140, 39, 143)。
让我们一步步解读这行代码:
通过这行代码,您成功将字符串形式的坐标信息 (25, 140, 39, 143) 转换为了一个包含整数的元组,并且可以在后续的处理中使用这个元组。
ast.literal_eval()函数可以安全地将字符串转换为相应的Python数据结构,包括元组。
ast(Abstract Syntax Trees,抽象语法树)是Python的标准库之一,用于在Python代码中表示和处理代码的抽象语法结构。抽象语法树是一种树状的数据结构,它以抽象的方式表示代码的结构和语义。它可以帮助我们分析、操作和转换Python代码。
ast模块中包含了多个类和函数,用于将Python代码解析成抽象语法树,并提供了许多工具来处理和分析抽象语法树。以下是ast模块中一些重要的组件和用途:
使用ast模块,您可以在Python中分析代码,例如查找特定的语法结构,生成代码,或者进行代码变换和优化。它在代码静态分析、代码生成和代码转换等领域都有广泛的应用。同时,ast模块也是很多Python代码检查工具和代码重构工具的基础。
import ast
coordinates_str = '(25, 140, 39, 143)'
# 使用ast.literal_eval()将字符串转换为元组
coordinates_tuple = ast.literal_eval(coordinates_str)
print(coordinates_tuple) # 输出 (25, 140, 39, 143)
print(type(coordinates_tuple)) # 输出
在上述代码中,我们首先定义了一个字符串变量coordinates_str,它包含了您的坐标信息的字符串形式。然后,我们使用ast.literal_eval()函数将字符串转换为元组,并将结果保存在coordinates_tuple变量中。最后,我们输出coordinates_tuple的值和类型。
通过上述代码,您可以将字符串形式的坐标信息(25, 140, 39, 143)转换为真正的Python元组对象,方便在后续处理中使用。