[英]use of method startswith() and re.findall() in python to extract exact words
我有一个如下的文本文件,
&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)
谢谢您的帮助。
考虑到您始终需要从文件中提取每一行的第二个单词,因此在这里不需要正则表达式。 使用split()
并提取第二个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)
将2行替换为
if l.startswith('&attri'):
col.append(l.split()[1].strip("'"))
尝试这个:
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'"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.