我正在尝试编写一个Python代码来匹配Python中两个列表中的内容。
一个制表符分隔的文件如下所示:
COPB2
KLMND7
BLCA8
而另一个 file2 有一长串看起来相似的“名称”,如果你愿意的话。文件中应该有一些相同的匹配项,我已成功识别这些匹配项并将其写入新文件。问题是当其中一个“名称”的末尾有附加字符时。例如,上面的 COPB2
应与 file2 中的 COPB2A
匹配,但事实并非如此。同样,KLMND7
应与 KLMND79
匹配。我应该使用正则表达式吗?把它们做成字符串?任何想法都有帮助,谢谢!
在看到下面的第一个回复后,到目前为止我所做的工作:
with open(in_file1, "r") as names:
for line in names:
file1_list = [i.strip() for i in line.split()]
file1_str = str(file1_list)
with open(in_file2, "r") as symbols:
for line in symbols:
items = line.split("\t")
items = str(items)
matches = items.startswith(file1_str)
print matches
当我知道应该有一些匹配时,此代码返回False
。
最佳答案
string.startswith()
如果只是尾随字符,则不需要正则表达式
>>> g = "COPB2A"
>>> f = "COPB2"
>>> g.startswith(f)
True
这是一段工作代码:
file1_list = []
with open(in_file1, "r") as names:
for line in names:
line_items = line.split()
for item in line_items:
file1_list.append(item)
matches = []
with open(in_file2, "r") as symbols:
for line in symbols:
file2_items = line.split()
for file2_item in file2_items:
for file1_item in file1_list:
if file2_item.startswith(file1_item):
matches.append(file2_item)
print file2_item
print matches
对于大文件来说可能会很慢。如果不能接受,我可以尝试思考如何优化。
关于python - 当 Python 列表中有多余字符时进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14469306/