BIO-张磊 发表于 2020-1-16 14:54:22

python 匹配

我有一个字符串 序列, xx = “sadasdsadas AA1,AA12”

我使用xx.find()找AA1结果AA12也被找出来了

请问大家,这个怎么解决,有没有精确匹配的方法?

zltzlt 发表于 2020-1-16 14:58:42

什么叫 “精确匹配”?

BIO-张磊 发表于 2020-1-16 15:01:18

zltzlt 发表于 2020-1-16 14:58
什么叫 “精确匹配”?

我想找AA,在字符串里面有AA,AAB,ACA,我如果使用.find()
会返回AA和AAB,但是我只想返回AA,怎么解决呢?可以规定字符串长度吗?

zltzlt 发表于 2020-1-16 15:04:20

BIO-张磊 发表于 2020-1-16 15:01
我想找AA,在字符串里面有AA,AAB,ACA,我如果使用.find()
会返回AA和AAB,但是我只想返回AA,怎么解决呢 ...

>>> s = "AA,AAB,ACA"
>>> s.split(',').index('AA')
0
>>> s    # 因为 'AA' 的长度是 2 ,所以加 2
'AA'

BIO-张磊 发表于 2020-1-16 15:09:01

zltzlt 发表于 2020-1-16 15:04


import os
os.chdir(r'D:\9种反刍动物\牦牛\cazy\test')
file = os.listdir()
for i in file:
    b = []
    for x in open(i).readlines():
      if x.find('PUL1') > -1:
            b.append(x)
    with open('D:/9种反刍动物/牦牛/cazy/result/%s' % i,'w') as f:
      for each in b:
            each = each.strip() + "\t" +"pectin\n"###这一步是在每一行后面加特定字符
            f.writelines(each)
         

您好,我其实是输入一个文件,把每一行有特定字符的找出来输出到新文件,我想找的是PUL1,但是PUL11和PUL12也被找出来,请问有什么解决方法吗??

zltzlt 发表于 2020-1-16 15:09:28

BIO-张磊 发表于 2020-1-16 15:09
import os
os.chdir(r'D:\9种反刍动物\牦牛\cazy\test')
file = os.listdir()


把你的文件内容发上来?

BIO-张磊 发表于 2020-1-16 15:10:40

zltzlt 发表于 2020-1-16 15:09
把你的文件内容发上来?

Yak_Rumen.Co.687        PUL1        Yak_Rumen.Co__c1425112_2       
Yak_Rumen.Co.687        PUL1        Yak_Rumen.Co__c1425112_3       
Yak_Rumen.Co.687        PUL10        Yak_Rumen.Co__c7110352_2

zltzlt 发表于 2020-1-16 15:14:00

BIO-张磊 发表于 2020-1-16 15:10
Yak_Rumen.Co.687        PUL1        Yak_Rumen.Co__c1425112_2       
Yak_Rumen.Co.687        PUL1        Yak_Rumen.Co__c1425112_3       
...

import os

os.chdir(r'D:\9种反刍动物\牦牛\cazy\test')
file = os.listdir(".")
for i in file:
    b = []
    for x in open(i).readlines():
      try:
            x.split("      ").index("PUL1")
            b.append(x)
      except Exception:
            pass
    with open('D:/9种反刍动物/牦牛/cazy/result/%s' % i, 'w') as f:
      for each in b:
            each = each.strip() + "\t" + "pectin\n"
            f.writelines(each)

BIO-张磊 发表于 2020-1-16 15:17:19

zltzlt 发表于 2020-1-16 15:14


抱歉,好像不行,这样子split反而把全部输出为空。

zltzlt 发表于 2020-1-16 15:23:41

BIO-张磊 发表于 2020-1-16 15:17
抱歉,好像不行,这样子split反而把全部输出为空。

我这里测试是可以的。

BIO-张磊 发表于 2020-1-16 15:25:50

zltzlt 发表于 2020-1-16 15:23
我这里测试是可以的。

好的,我是了一下,可能是输入的原因,确实是可以的,多谢版主
页: [1]
查看完整版本: python 匹配