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

标签 python list sequence reverse

#!/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

关于python - python 如何仅使用文件中每一行的最后一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29204505/

相关文章:

python - 对包含列表的Pandas列进行分组操作

r - 使用 R 绘制事件序列数据图表

python - Django/python postgresql 原始 sql 问题

python - 为什么不能按以下方式在for循环中使用多个语句?

Python值/引用/我都不知道

python - 如何使用 while 循环从列表的右端开始

c# - 清除和替换是否比循环检查所有记录更有效?

arrays - 如何从 flutter 中的另一个列表中获取最高值列表

java - 手动使用 Hibernate 序列生成器

Oracle:序列 MySequence.currval 尚未在此 session 中定义