繁体   English   中英

如何只使用python文件中每行的最后一部分?

[英]How to use only the last part of each line in file for python?

#!/usr/bin/python

import sys, re

fname = sys.argv[1]
barcodefname = sys.argv[2]

barcodefile = open(barcodefname, "r")
#list = open(barcodefname, "r").readlines(-1)

for barcode in barcodefile:
        barcode = barcode.strip()
        print "barcode: %s" % barcode
        outfname = "%s.%s" % (fname, barcode)
        outf = open(outfname, "w")
        handle = open(fname, "r")
        for line in handle:
                potential_barcode = line[:len(barcode)]
                if potential_barcode == barcode:
                        outseq = line[len(barcode):]
                        sys.stdout.write(outseq)
                        outf.write(outseq)
        handle.close()
        outf.close()
barcodefile.close()

我遇到的问题是第二个参数文件看起来像这样:

S1 djgbfgbf
S2 dkffbjfb
S3 lfjbvrid
....etc

我需要找到一种方法来忽略每行开头的S1,S2,S3,并且只将以下字母与参数1文件匹配。 在第9行,我正在尝试以某种方式创建一个列表并将其反转但我不确定这是否是答案。

对于像S1 djgbfgbf这样的字符串,如果要忽略第一部分,可以拆分字符串并选择最后一项,此字符串也可以是一行文件:

>>> s='S1 djgbfgbf'
>>> s.split()[-1]
'djgbfgbf'

例如,如果您有一个名为in_file的文件,则可以执行以下列表理解,其结果是所有行的最后一部分:

[line.split()[-1] for line in open('in_file')]

或者你可以遍历你的文件(效率低于列表理解但可以更灵活):

for line in open('in_file'):
      last_part=line.split()[-1]
      #do stuff with last part

你可以像Kasra写的那样做。 或者,如果您只对最后一个单词感兴趣,您可以从右侧分割,只进行一次分割,而不是分割为所有单词。

In [11]: a="some sentence last word"

In [12]: a.rsplit(maxsplit=1)
Out[12]: ['some sentence last', 'word']

In [13]: a.rsplit(maxsplit=1)[-1]
Out[13]: 'word'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM