Python 比较列表并从包含其他列表元素的一个列表中获取元素
我有两张单子,A和BPython 比较列表并从包含其他列表元素的一个列表中获取元素,python,python-3.x,list,Python,Python 3.x,List,我有两张单子,A和B A = ["string1", "string2"] B = ["A string1 W", "B string4 Q", "HF string2 W] 我想找到一种方法来比较这两个列表,并从B中获取包含a字符串的元素,然后将这些元素放到另一个文本文件列表中。上述示例将产生: C = ["A string1 W", "HF string2 W"] 谢谢你的帮助 注意:这个问题最初涉及从文本文件中读取行,但由于这一部分很琐碎,我选择将其删除。这很简单,坦率地说,一些额外的
A = ["string1", "string2"]
B = ["A string1 W", "B string4 Q", "HF string2 W]
我想找到一种方法来比较这两个列表,并从B中获取包含a字符串的元素,然后将这些元素放到另一个文本文件列表中。上述示例将产生:
C = ["A string1 W", "HF string2 W"]
谢谢你的帮助
注意:这个问题最初涉及从文本文件中读取行,但由于这一部分很琐碎,我选择将其删除。这很简单,坦率地说,一些额外的谷歌搜索应该可以让你达到目的。但是,你可以使用
# read lines as a list
file_1_lines = open('/path/to/file1').readlines()
file_2_lines = open('/path/to/file2').readlines()
# get the containing lines with a list comp
file_2_lines_containing_1 = [file_2_lines[i] for i in range(len(file_2_lines)) if file_1_lines[i] in file_2_lines[i]]
# save
with open('/path/to/newfile') as f:
json.dump(file_2_lines_containing_1,f)
如果您想要一个更简单的for循环实现,请发表评论。我得到了一个“文件\u 2\u行\u包含\u 1”的空列表-我可以在代码中添加一些东西使其工作吗?我知道问题不在于A.txt中的换行符,因为我删除了列表中的换行符(如果A.txt中的字符串不在B.txt中的一行末尾),原始列表中可能有新行符。清理条目否,我确定“文件行”中没有换行符,因为当我打印列表时,我看不到换行符。我使用了“file_2_lines=list(map(lambda s:s.strip(),file_2_lines))”来删除换行符,因为您的换行符对我仍然不起作用,但我使用了以下代码,而不是第六行代码:“file_2_lines_包含_1=[I for e in file_2_lines for I in file_lines if e in I]”。