字符串比较:Python

2024-06-16 10:29:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组字符串如下所示:

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来构建系统发育树,使用字符串比较更简单


Tags: 函数字符串dnam1m2tgcatcnngahpyfvi
3条回答

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

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

它从经过|到字符串结尾的所有字符中获取子字符串。你知道吗

不过,我不会把使用split称为“巨大的头痛”,而且可以说它更容易阅读。你知道吗

要转换整个列表,可以创建一个函数来执行您希望它执行的操作,然后使用列表理解或map。你知道吗

视为带有自定义分隔符的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']

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

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

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

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

相关问题 更多 >