我有一个包含特定行的文件.txt,比如
file.txt的
.
.
T - Python and Matplotlib Essentials for Scientists and Engineers
.
A - Wood, M.A.
.
.
.
我想提取包含字符串的行,我尝试使用一个简单的脚本:
with open('file.txt','r') as f:
for line in f:
if "T - " in line:
o_t = line.rstrip('\n')
elif "A - " in line:
o_a = line.rstrip('\n')
o_T = o_t.split('T - ')
print (o_T)
o_A = o_a.split('A - ')
#o_Fname =
#o_Lname =
print (o_A)
我的输出:
['', 'Python and Matplotlib Essentials for Scientists and Engineers']
['', 'Wood, M.A.']
和我想要的输出:
Python and Matplotlib Essentials for Scientists and Engineers
Wood, M.A.
此外,对于第二个(" Wood,M.A。"),我还可以提取姓氏和名字。 所以最终结果将是:
Python and Matplotlib Essentials for Scientists and Engineers
Wood
M.A.
答案 0 :(得分:2)
使用filter
删除列表中的所有空元素。
<强>实施例强>
o_T = filter(None, o_t.split('T - '))
print (o_T)
o_A = filter(None, o_a.split('A - '))
print (o_A)
<强>输出:强>
['Python and Matplotlib Essentials for Scientists and Engineers']
['Wood, M.A.']
答案 1 :(得分:1)
您的情况中的错误是您打印o_t而不是o_T(这是拆分操作的结果)。
然而,正如其他人指出的那样,您也可以通过使用正则表达式\w - (.+)
删除前4个字符来解决此问题,然后您可以获取所有值。如果您还需要第一个字符,则可以使用(\w) - (.+)
。
除此之外,如果你给你的变量更好的名字,你会有更好的生活:)