如何在Python中从文件读取到下一行的下一个单词或多个单词?
我正在尝试从一行中读取匹配到的单词:
具体来说 - 我有一个文件,里面有以下内容:
-- Host: localhost
-- Generation Time: Nov 15, 2006 at 09:58 AM
-- Server version: 5.0.21
-- PHP Version: 5.1.2
我想搜索这个文件,看看里面是否包含“Server version:”这个子字符串。如果找到了,我想读取“Server version:”后面的字符,直到下一行。在这个例子中,就是“5.0.21”。
我尝试了以下代码,但它返回的是下一行的内容(-- PHP Version: 5.1.2),而不是下一个单词(5.0.21)。
with open('/root/Desktop/test.txt', 'r+') as f:
for line in f:
if 'Server version:' in line:
print f.next()
5 个回答
0
就像你有的那样
line='-- Server version: 5.0.21'
只是:
line.split()[-1]
这样做会让你得到最后一个单词,而不是冒号后面的所有字符。
如果你想要冒号后面的所有字符
line.split(':', 1)[-1].strip()
可以根据需要把冒号替换成其他字符串。
1
你可能想要这样替换那个文本
if 'Server version: ' in line:
print line.rstrip().replace('-- Server version: ', '')
我们使用 line.rstrip()
是因为读取的 line
末尾会有一个换行符,我们需要把它去掉。
1
你可以试着使用字符串的 split
方法,把你想要去掉的部分(比如 'Server version: '
)当作分隔符来使用:
if 'Server version: ' in line:
print line.split('Server version: ', 1)[1]
1
可能有点过于复杂,但你也可以使用 正则表达式 模块 re
:
match = re.search("Server version: (.+)", line)
if match: # found a line matching this pattern
print match.group(1) # whatever was matched for (.+ )
这样做的好处是你只需要输入一次关键字,不过当然你也可以把其他解决方案放到一个函数里,这样也能达到同样的效果。此外,你还可以进行一些额外的验证。
1
你正在使用 f.next() 这个方法,它会返回下一行内容。
但你需要的是:
with open('/root/Desktop/test.txt', 'r+') as f:
for line in f:
found = line.find('Server version:')
if found != -1:
version = line[found+len('Server version:')+1:]
print version