Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何读取文件中的下一个单词直到下一行?_Python_File Io - Fatal编程技术网

在python中,如何读取文件中的下一个单词直到下一行?

在python中,如何读取文件中的下一个单词直到下一行?,python,file-io,Python,File Io,我正在尝试在匹配单词后从一行中读取单词: 确切地说- 我有一个包含以下文本的文件: -主机:本地主机 -生成时间:2006年11月15日上午09:58 -服务器版本:5.0.21 -PHP版本:5.1.2 我想搜索它,如果该文件包含“Server version:”子字符串,那么在“Server version:”之后读取下一个字符,直到下一行,在本例中为“5.0.21” 我尝试了以下代码,但它给出了下一行——PHP版本:5.1.2,而不是下一个word 5.0.21 with open('/r

我正在尝试在匹配单词后从一行中读取单词:

确切地说- 我有一个包含以下文本的文件:

-主机:本地主机 -生成时间:2006年11月15日上午09:58 -服务器版本:5.0.21 -PHP版本:5.1.2 我想搜索它,如果该文件包含“Server version:”子字符串,那么在“Server version:”之后读取下一个字符,直到下一行,在本例中为“5.0.21”

我尝试了以下代码,但它给出了下一行——PHP版本:5.1.2,而不是下一个word 5.0.21

with open('/root/Desktop/test.txt', 'r+') as f:
    for line in f:
        if 'Server version:' in line:
            print f.next()

您可能希望像这样替换该文本

if 'Server version: ' in line:
    print line.rstrip().replace('-- Server version: ', '')

我们之所以使用line.rstrip,是因为读取行的末尾将有一个新行,并且我们将其剥离。

您可能希望像这样替换该文本

if 'Server version: ' in line:
    print line.rstrip().replace('-- Server version: ', '')

我们之所以使用line.rstrip,是因为读取行的末尾将有一个新行,我们将其剥离。

您使用的是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

您正在使用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
您可以尝试对字符串使用split方法,使用字符串删除,即“Server version:”作为分隔符:

if 'Server version: ' in line:
    print line.split('Server version: ', 1)[1]
您可以尝试对字符串使用split方法,使用字符串删除,即“Server version:”作为分隔符:

if 'Server version: ' in line:
    print line.split('Server version: ', 1)[1]

可能有点过分,但您也可以使用模块re:


优点是只需键入一次键,但当然,通过将任何其他解决方案包装到函数定义中,也可以获得相同的效果。此外,您还可以进行一些额外的验证。

可能有些过分,但您也可以使用模块re:

优点是只需键入一次键,但当然,通过将任何其他解决方案包装到函数定义中,也可以获得相同的效果。此外,您还可以进行一些额外的验证。

line='-- Server version: 5.0.21'
只是:

这将为您提供最后一个单词,而不是后面的所有字符:

如果希望所有字符都在以下位置之后:

替换:根据需要使用其他字符串

如你所愿

line='-- Server version: 5.0.21'
只是:

这将为您提供最后一个单词,而不是后面的所有字符:

如果希望所有字符都在以下位置之后:


替换:根据需要使用其他字符串

@tobias_k我们也可以替换它。我更新了我的答案check@N.N.Ontika如果你觉得我的回答对你有帮助,你可以:——@tobias_k我们也可以替换它。我更新了我的答案check@N.N.Ontika如果你觉得我的答案对你有帮助,你可以:-但在一代人的时间内不会起作用。。。或者,拆分“:”?@tobias_k操作问题是针对服务器版本的。但在生成时间内不起作用。。。或者,拆分“:”?@tobias_k操作问题是针对服务器版本的。根据您的评论,以下答案对您有所帮助,您为什么不接受一个?我想你甚至已经有一个被接受了,但后来又被拒绝了——为什么?我原以为所有正确的答案都可以被接受,但当我选择的时候,前一个被拒绝了,因为我是新来的,我没有足够的声誉去投票。但是我尝试了下面的答案,效果很好,谢谢大家帮助我。既然根据你们的评论,下面的答案帮助了你们,为什么你们不接受一个呢?我想你甚至已经有一个被接受了,但后来又被拒绝了——为什么?我原以为所有正确的答案都可以被接受,但当我选择的时候,前一个被拒绝了,因为我是新来的,我没有足够的声誉去投票。但我尝试了下面的答案,它奏效了,所以谢谢大家帮助我。