2

我需要在每一行上搜索一个特定的单词。如果我找到它,请将其放入列表中。

例如,我在下面有几行,我正在寻找一个字符串“TTT”。

TTT   ogkgkgk   yyryryr
ghgh  TTTXXX    fgfgfgf
gfgf  ghghgTTT  fgfgf

只有第一行应该匹配,因为它包含确切的单词“TTT”。如果我使用以下内容,它将匹配其他两行,因为“TTTXXX”和“ghghgTTT”都包含“TTT”。

mystring = str([line for line in common.split('\n') if 'TTT' in line])

我如何只匹配第一行?

4

3 回答 3

6

只需将if列表理解中的检查更改为if 'TTT' in line.split()

[line for line in common.split('\n') if 'TTT' in line.split()]

这将在空白处拆分行,因此只有在与行的每个其他块之间至少有一个空白字符分隔'TTT' in line.split()时才会如此。TTT

于 2013-10-16T22:11:44.623 回答
1

我会使用带有单词边界的正则表达式:

 import re
 mystring = str([line for line in common.split('\n') if re.search(r'\bTTT\b', line)])

有关详细信息,请参阅http://docs.python.org/2/howto/regex.html 。

于 2013-10-16T22:16:07.117 回答
0

正则表达式应该可以解决问题!

import re
mystring = str([line for line in common.split('\n') if re.search(r"^(.*\s)*TTT(\s.*)$", line)])
于 2013-10-16T22:14:58.170 回答