【问题标题】:Replace and split line替换和分割线
【发布时间】:2016-12-22 11:48:44
【问题描述】:

我告诉你我的问题。 一张这样的表:

    gi|494115682|ref|WP_007055464.1| MULTISPECIES: dephospho-CoA kinase [Bifidobacterium]
    gi|614110824|sp|P9WIB2.1|PHLB_MYCTO RecName: Full=Phospholipase C 2; Flags: Precursor
    gi|446269943|ref|WP_000347798.1| MULTISPECIES: amino acid ABC transporter permease [Vibrio]
    gi|446561267|ref|WP_000638613.1| acetyltransferase [Staphylococcus aureus]

当我用 line.split('| ') 来分隔最后一个管道'|'时,有些行在后面没有空格,最后我无法获得一个清晰的表格。 例如:

gi|614110824|sp|P9WIB2.1|PHLB_MYCTO RecName:Full=磷脂酶 C 2;标志:先驱

我的意图是替换最后一个'|'到 '\t' 并在被 '\t' 分割后。使用上面的行,我无法在我想要的位置拆分所有行。

for g in file:
    name = g.replace('| ', '|\t').

strip().split('\t')

如果我先用 '|' 分割 如何更正这条线以将第四个管道替换为 '| ' 并在执行拆分后?

提前谢谢你。

【问题讨论】:

  • 你可以发布你想要的结果吗?
  • 你为什么分裂'| '而不是'|'?使用不带空格的| 并使用列表的第-1 个元素。

标签: python replace split


【解决方案1】:
text = 'gi|494115682|ref|WP_007055464.1| MULTISPECIES: dephospho-CoA kinase [Bifidobacterium]'
text.rsplit('|',1) 

出来:

['gi|494115682|ref|WP_007055464.1',
 ' MULTISPECIES: dephospho-CoA kinase [Bifidobacterium]']

str.rsplit(sep=None, maxsplit=-1)

返回单词列表 字符串,使用 sep 作为分隔符字符串。如果给出了 maxsplit,则在 大多数 maxsplit 拆分已完成,最右边的拆分。如果 sep 不是 指定或无,任何空白字符串都是分隔符。

【讨论】:

    【解决方案2】:

    我怀疑你实际上想要 csv 模块:

    import io
    import csv
    
    file = io.StringIO('''
    gi|494115682|ref|WP_007055464.1| MULTISPECIES: dephospho-CoA kinase [Bifidobacterium]
    gi|614110824|sp|P9WIB2.1|PHLB_MYCTO RecName: Full=Phospholipase C 2; Flags: Precursor
    gi|446269943|ref|WP_000347798.1| MULTISPECIES: amino acid ABC transporter permease [Vibrio]
    gi|446561267|ref|WP_000638613.1| acetyltransferase [Staphylococcus aureus]
    '''.strip())
    
    reader = csv.reader(file, delimiter='|')
    for row in reader:
        print(row)   # or print('\t'.join(row))
    

    【讨论】:

      猜你喜欢
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      • 2020-12-10
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 2017-03-04
      相关资源
      最近更新 更多