字符串比较:Python

时间:2014-10-21 05:30:47

标签: python string

我有一组看起来像这样的字符串:

M.HpyFIX.dna|GTNAAC
M1.HpyFXIII.dna|CCATC
M.HpyFI.dna|CAGT
M2.HpyFXIII.dna|CCATC
M.HpyFVI.dna|TGCA
M.HpyFVIII.dna|TCNNGA
M.HpyFORFX.dna|CCNNGG
M.HpyFII.dna|TCGA
M.HpyFVII.dna|ATTAAT
M.HpyFXII.dna|GTCA
M.HpyFV.dna|CCGG
M.HpyFXI.dna|CTNAG
M.HpyFIII.dna|GATC
M.HpyFIV.dna|GANTC

我想仅根据|(管道)之后的字符串来比较它们。我不想使用string.strip('|')。在上面的例子中,我希望逐个获取每个字符串并应用我所拥有的函数,除了M1.HpyFXIII.dna|CCATCM2.HpyFXIII.dna|CCATC,我想在临时列表中进入,然后应用函数

我想使用字符串比较的原因是我使用ETE来构建系统发育树,并且使用字符串比较更简单

5 个答案:

答案 0 :(得分:2)

如果不是s.split('|')[1]来获取|之后的字符串部分,那么可能

s[s.index('|')+1:]

|之后的所有字符到字符串结尾处抓取子字符串。

我不会使用split作为上面的“大头痛”,并且它可以说更容易阅读。

要转换整个列表,您可以创建一个执行您希望它执行的操作的函数,然后使用列表推导或map

答案 1 :(得分:0)

您可以使用split()方法,然后在返回的列表中获取第二个字符串。

_junk, myString = 'M.HpyFIX.dna|GTNAAC'.split('|')

或者如果您不想将其存储在字符串中:

'M.HpyFIX.dna|GTNAAC'.split('|')[1]

答案 2 :(得分:0)

将自定义分隔符视为csv文件

>>> import csv
>>> import collections
>>> with open('in.txt') as in_file:
...     reader = csv.reader(in_file, delimiter='|')
...     data   = list(reader)  #exhaust generator, convert it to list
...     #now you have loaded your data in two-dimensional array, lets find dups
...     dup_values = [x for x, y in collections.Counter([r[1] for r in data]).items() if y > 1]
...     for r in data:
...             if r[1] in dup_values:
...                     print r
... 
['M1.HpyFXIII.dna', 'CCATC']
['M2.HpyFXIII.dna', 'CCATC']

答案 3 :(得分:0)

其他选项是str.partition

x = "M.HpyFIX.dna|GTNAAC"
object, _, sequence = x.partition("|")
print(sequence)
# or grab the third element
print(x.partition("|")[1])

答案 4 :(得分:0)

ls = ['M.HpyFIX.dna|GTNAAC', 'M1.HpyFXIII.dna|CCATC', 'M.HpyFVII.dna|ATTAAT']

nls = [ l.split('|')[1] for l in ls ]