python - 当 Python 列表中有多余字符时进行匹配

标签 python sorting matching

我正在尝试编写一个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/

相关文章:

python - 从字符串中提取出现在关键字之前的单词/句子 - Python

python - 如何使用 PyMongo 在重复键错误后继续插入

python - 避免使用 for 循环来删除列表的一部分

c# - 如何在Unity中对变量进行排序并正确使用?

file - 按文件中的列批量排序

c# - 匹配对搜索算法?

python - 星球大战 api => IndexError : list index out of range error

python - 当有更多任务时,许多分布式任务 worker 在一次评估后闲置,或者从未收到任何工作

c - 任何类型的一般排序,与结构作斗争

algorithm - 选择最佳的元素配对