Skip to main content
 首页 » 编程设计

python之在文本文件中搜索字符串,保存包含列表中项目的行,如果文本文件中不存在该项目,则返回 NA

2025年05月04日39shanyou

我有一个项目列表

ls=["John","Tanner",'Mary','Anna','25']  

和一个文本文件:

 V1 'John' 'blablablabla...' 
 V2 'Anna' 'blablablabla...' 
 V3 'Josh' 'blablablabla...' 
 V4 'Mary' 'blablablabla...' 
 V5 'Steven' 'blablablabla...' 

我想在文本文件中搜索列表的每个项目,并保存包含该项目的行。

var=[] 
with open('C:/Maryam/example/test.txt', 'r') as file: 
    for line in file: 
        for item in ls: 
            if item in line: 
                var.append(line) 
 
var    

输出已经看起来像:

["  V1 'John' 'blablablabla...'\n","  V2 'Anna' 'blablablabla...'\n", 
"  V4 'Mary' 'blablablabla...'\n"] 

但我希望得到这样的东西:

["  V1 'John' 'blablablabla...'\n", 'NA' , "  V2 'Anna' 'blablablabla...'\n", 
"  V4 'Mary' 'blablablabla...'\n", 'NA'] 

我试图在列表中生成“NA”,但无法弄清楚。 我使用的原因 对于文件中的行: 因为我想保存包括特定字符串在内的整行。有什么方法可以使用正则表达式,这样我就可以摆脱行中的 for 循环,然后保存整行。 谢谢。

请您参考如下方法:

我会建议使用字典而不是列表,这样您就可以为每个要搜索的元素和相应的行存储一个条目(如果有的话,NA 否则):

# Initialize the result dictionary 
result = {} 
for name in ls: 
    result[name] = 'NA' 
 
# Process the file 
with open('C:/Maryam/example/test.txt', 'r') as file: 
    for line in file: 
        # For each line check if it contains a reserved keyword 
        for name in result.keys(): 
            if name in line: 
                result[name] = line 
 
# Show result (key = name, value = line content) 
result 
 
# Show only the values (line contents) 
result.values()