我是一个 python 初学者,只是遇到了一个简单的问题:我有一个名称列表(指示符),然后是一个非常简单的代码,它读取 csv 文件中的行并打印第一列中具有名称的 csv 行( row[0]) 与我的“指示符列表”相同。所以:
import csv
DesignatorList = ["AAX-435", "AAX-961", "HHX-9387", "HHX-58", "K-58", "K-14", "K-78524"]
with open('DesignatorFile.csv','rb') as FileReader:
for row in csv.reader(FileReader, delimiter=';'):
if row[0] in DesignatorList:
print row
我的 csv 文件只是一个名称列表,如下所示:
AAX-435
AAX-961
HHX-58
HHX-9387
我希望能够使用像 * 和 . 这样的通配符,例如:假设我把它放在我的 csv 文件中:
AAX*
H.X-9387
*58
我需要我的代码能够解释这些通配符/控制字符,打印以下内容:
- 以“AAX”开头的每一行;
- 每行以“H”开头,然后是任何后续字符,最后以“X-9387”结尾;
- 以“58”结尾的每一行。
谢谢!
编辑:供将来参考(以防有人遇到同样的问题),这就是我按照罗马建议解决问题的方法:
import csv
import re
DesignatorList = ["AAX-435", "AAX-961", "HHX-9387", "HHX-58", "K-58", "K-14", "K-78524"]
with open('DesignatorFile.txt','rb') as FileReader:
for row in csv.reader(FileReader, delimiter=';'):
designator_col0 = row[0]
designator_col0_re = re.compile("^" + ".*".join(re.escape(i) for i in designator_col0.split("*")) + "$")
for d in DesignatorList:
if designator_col0_re.match(d):
print d