python解析并打印之前的文本。(点)

python解析并打印之前的文本。(点),python,Python,我正在尝试一个程序,它必须解析文本文件:qwer.txt并打印“=”之前和“,”之后的值: qwer.txt john.xavier=s/o john jane.victory=s/o ram 输出: xavier victory 我的程序显示了整行文字,请帮助说明如何在显示后显示具体文字。及= with open("qwer.txt", 'r') as my_file: a = my_file.readlines() for line in a: f

我正在尝试一个程序,它必须解析文本文件:qwer.txt并打印“=”之前和“,”之后的值:

qwer.txt

john.xavier=s/o john
jane.victory=s/o ram
输出:

 xavier
 victory
我的程序显示了整行文字,请帮助说明如何在显示后显示具体文字。及=

with open("qwer.txt", 'r') as my_file:
     a = my_file.readlines()
     for line in a:
        for part in line.split():
             if "=" in part:
                print part.split(' ')[-1]

请帮忙!答案将不胜感激。

您可能需要更好地理解该陈述:-)

with open("qwer.txt", 'r') as my_file:
    for line in my_file:
        print line.split('=')[0].split('.')[1]
以下是我的解决方案:

with open("qwer.txt", 'r') as my_file:
for line in my_file:
    name = line.split("=", 1)[0]
    print name.split(".")[-1]
这两条线也可以这样组合:

print line.split("=", 1)[0].split(".")[-1]

“with”语句的官方doc使用regex而不是拆分是一种很有趣的方式,并且会忽略错误行而不是出错(如果我自己这么说的话,这是非常巧妙的)。如果您想进一步使用而不是输出名称,还可以提供一个很好的名称列表

import re

r = re.compile('.+?\.(.+)?\=.+')

with open("qwer.txt", 'r') as f:
    names = [r.match(x).group(1) for x in f.read().splitlines() if r.match(x)]

for name in names: print name

如果您实际在
中为第行中的部分拆分字符串,则会有所帮助。split()
(示例中的第四行)我希望您可能在某个地方有一个
.split(“.”
)。我得到了输出,但错误为:print line.split('=')[0]。split('.')[1]IndexError:list index超出范围>>@adarshram这可能是因为提到的名称中可能没有“.”。好的,您可以添加if(“=”在第行)和(“.”):以检查字符串是否适用于预期条件。