我有一个包含数千行的文本文件。这是一个例子
line = .Falies/367. 11DG1550/11DG15537.Axiom=nt60
line = .Failies/367. 11DG1550/11DG15537.Axiom=nt50
我试图在最后提取字符串' nt60',' nt50'。
lines = line.split('=')
version = lines[-1]
问题是行尾字符将被包含在内('\n'
)
我想过使用正则表达式搜索来匹配从('=nt'
)开始的字符串
但我不知道我应该用什么来匹配=, word, number
。
有人可以帮忙吗?
答案 0 :(得分:2)
你的第一种方法绝对没问题。您可以使用您使用第一种方法提取的字符串,然后将strip()
应用于它:
strip()
从字符串中删除所有前导和尾随空格和换行符。
>>> your_str = 'nt60\n'
>>> your_str.strip()
'nt60'
对于你的情况:
lines = line.rsplit('=',1)
version = lines[-1].strip()
答案 1 :(得分:1)
匹配=
nt
然后number
的正则表达式是:
=(nt\d+)
在你的例子中:
line = .Falies/367. 11DG1550/11DG15537.Axiom=nt60
line = .Failies/367. 11DG1550/11DG15537.Axiom=nt50
它会返回两个匹配项:
MATCH 1
1. [49-53] `nt60`
MATCH 2
1. [105-109] `nt50`
说明:
`=` matches the character `=` literally
1st Capturing group `(nt\d+)`
`nt` matches the characters `nt` literally (case sensitive)
`\d` match a digit `[0-9]`
`+` Quantifier: Between one and unlimited times, as many times as possible,
giving back as needed
如果您希望正则表达式与= word
number
匹配,则只需将nt
替换为\w+
即可匹配任何字词。
希望这会有所帮助。