我有一个如下的文本文件,
&attri 'abc' real
&attri 'cde' real
&attri 'efg' {'0', '1'}
&attri 'ghi_jkl' real
&attri 'lmn' real
&attri 'nop' real
&attri 'pqr_stu_uvw' real
&attri 'xy_z' {'0', '1'}
我想从该文件中提取所有单词'abc', 'cde', 'efg', 'ghi_jkl', 'lmn', 'nop', 'pqr_stu_uvw', 'xy_z'
。
我编写了以下代码,但仅打印[]
。
import re
col = []
with open('text1.txt', 'r') as f:
lines=f.readlines()
for line in lines:
l = line.strip()
if l.startswith('&attri'):
col.append(re.findall(r"'(.{1})'", l))
print(col)
谢谢您的帮助。
答案 0 :(得分:3)
这里不需要正则表达式,因为您始终需要从文件中提取每一行的第二个单词。使用split()
并提取第二个拆分:
col = []
with open('text1.txt', 'r') as f:
for line in f:
if line.strip().startswith('&attri'):
col.append(line.split()[1].strip("'"))
print(col)
答案 1 :(得分:1)
用
替换2行 if l.startswith('&attri'):
col.append(l.split()[1].strip("'"))
答案 2 :(得分:0)
尝试一下:
import re
s = '''&attri 'abc' real
&attri 'cde' real
&attri 'efg' {'0', '1'}
&attri 'ghi_jkl' real
&attri 'lmn' real
&attri 'nop' real
&attri 'pqr_stu_uvw' real
&attri 'xy_z' {'0', '1'}'''
print(re.findall("'[a-zA-Z_]*'",s)
["'abc'", "'cde'", "'efg'", "'ghi_jkl'", "'lmn'", "'nop'", "'pqr_stu_uvw'", "'xy_z'"]