Python:解析一行并排除最后一个令牌

时间:2013-11-06 20:40:41

标签: python parsing tokenize

关于Python中的行解析,我有一个非常简单的问题。

我有一个包含以下行的文件:

MV0346FDG-PFHTGE-CFSGD-22205-C0

MV0346FDG-PFHTGE-CFSGD-22205-34354-FHHTRW-0

MV0346FDG-PFHTGE-CFSGD-DTRHG-22205-AA1

我需要将这些行保存到新文件中,排除最后一行“ - ”后的字符。

结果如下:

MV0346FDG-PFHTGE-CFSGD-22205

MV0346FDG-PFHTGE-CFSGD-22205-34354-FHHTRW

MV0346FDG-PFHTGE-CFSGD-DTRHG-22205

我该如何编码?

4 个答案:

答案 0 :(得分:2)

您也可以使用rsplit()

for line in infile:
    token, _ = line.rsplit('-', 1)
    outfile.write(token + '\n')

答案 1 :(得分:0)

简单find the last instance的' - '并将其剪掉

q = 'MV0346FDG-PFHTGE-CFSGD-22205-C0'
q[:q.rfind('-')]
'MV0346FDG-PFHTGE-CFSGD-22205'

有关文件读/写的信息,请参阅here

答案 2 :(得分:0)

Python字符串有很好的方法可以拆分成较小的字符串,所以不需要搜索字符并对它们进行切片。您可以在交互式终端中查看所有这些方法here,或只需输入help(str)

所以:

with open(inpath) as infile, open(outpath, 'w') as outfile:
    for line in infile:
        main, hyphen, last = line.rpartition('-')
        outfile.write(main + '\n')

答案 3 :(得分:0)

您也可以使用rfind

for line in file:
    outfile.write(line[:line.rfind('-')] + "\n")