我有一个 list
list=["John","Tanner",'Mary','Anna',"Oscar",'ID']
和一个文本文件。文本文件内部如下所示:
ID 'blablablabla...'
V1 'John' 'blablablabla...'
V2 'Anna' 'blablablabla...'
V3 'Josh' 'blablablabla...'
V4 'Mary' 'blablablabla...'
V5 'Steven' 'blablablabla...'
我想搜索文本文件中的列表,最后我想得到结果:
RESULT=[1,'NA',4,2,'NA',0].
1,4和2是从V1、V4和V2中提取的数字。这是代码:
start_time = time.time()
for item in list:
with open('C:/Mary/test.txt', 'r') as file:
for line in file:
if item in line:
var_name=line.split()[0]
if var_name=='ID':
var_loc.append(0)
else:
var_loc.append(int(re.split('(\d+)',var_name)[1]))
break
#else:
# var_loc.append('NA')
total_time = time.time() - start_time
total_time
问题:当我从列表中选择一个项目并在文本中搜索时,它在文本中不存在,我希望它返回“NA”。但我无法弄清楚如何正确地做到这一点。正如我所说,我希望结果最后看起来像这样:
RESULT=[1,'NA',4,2,'NA',0].
谢谢。
最佳答案
您可以使用正则表达式来做到这一点:
with open('C:/Mary/test.txt', 'r') as f:
s = f.read()
for item in items:
if item == 'ID':
var_loc.append(0)
continue
m = re.search(f"^V(\d+) '{item}'", s, flags=re.MULTILINE)
if m is None:
var_loc.append('NA')
else:
var_loc.append(m.group(1))
请不要使用 list
关键字作为变量名 - 这是 python 的 list
函数的关键字(我将其替换为 items
) .
关于python - 使用 python 搜索文本中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51699120/