我有两个清单: file_name = ['AC30+775002+ secondary 2.jpg', 'AC30+775002+primary.jpg', 'AX-5+200998+primary.jpg', 'AX-5+200998+secondary 2.jpg', 'CJ19+244082+ Primary.jpg']
number = ['775002', '200998', '244082']
我正在尝试将number
我在列表中找到的匹配字符串附加到列表中file_name
,使其变为:
number = [['775002', 'AC30+775002+ secondary 2.jpg', 'AC30+775002+primary.jpg'], ['200998', 'AX-5+200998+primary.jpg', 'AX-5+200998+secondary 2.jpg'], ['244082', 'CJ19+244082+ Primary.jpg']]
这些列表是从单列 .csv 文件中提取的,因此我还希望以 Excel 可读的格式将其导出,以便在数据库中工作。
这是我到目前为止:
with open('file_name.csv', newline='') as csvfile:
file_name = list(csv.reader(csvfile))
with open('number.csv', newline='') as csvfile:
number = list(csv.reader(csvfile))
for i in number:
matching = [s for s in file_name if number[i] in s]
number[i].append(matching)```
问题是您在迭代列表时正在更改它。从来number[i]
都不是一个好主意,而且您正在访问,就好像您正在迭代一个范围一样。虽然这也可以使用理解轻松完成
file_name = ['AC30+775002+ secondary 2.jpg', 'AC30+775002+primary.jpg', 'AX-5+200998+primary.jpg', 'AX-5+200998+secondary 2.jpg', 'CJ19+244082+ Primary.jpg']
number = ['775002', '200998', '244082']
all_matches = [[i] + [s for s in file_name if i in s] for i in number]
[['775002', 'AC30+775002+ secondary 2.jpg', 'AC30+775002+primary.jpg'], ['200998', 'AX-5+200998+primary.jpg', 'AX-5+200998+secondary 2.jpg'], ['244082', 'CJ19+244082+ Primary.jpg']]
或者使用更合适的数据类型 ( dict
)
all_matches = {i: [s for s in file_name if i in s] for i in number}
{'775002': ['AC30+775002+ secondary 2.jpg', 'AC30+775002+primary.jpg'], '200998': ['AX-5+200998+primary.jpg', 'AX-5+200998+secondary 2.jpg'], '244082': ['CJ19+244082+ Primary.jpg']}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句