如果行以字母表中的任何字母开头,则打印行

2024-05-16 01:49:38 发布

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

我正试图在我的python程序中打印我所有的爬行动物亚种。我有一个文本文件,里面有一堆亚种和它们的DNA序列ID。我只想创建一个亚种(键)和它们各自的DNA序列id(值)的字典。但要做到这一点,我首先要学会如何把两者分开。

所以我只想打印所有的亚种名称,忽略序列id。

到目前为止

import re
file = open('repCleanSubs2.txt')
for line in file:
    if line.startswith('[a-zA-Z]'):
        print line

我相信编译器将'[a-zA-Z]'作为字符串文字,而不是搜索字母表中的任何字母,不管大小写敏感度如何,这正是我想要的。

我的if语句中是否缺少一些语法?

谢谢!


Tags: 程序idif字典line序列dnafile
3条回答

startswith不解释正则表达式。使用导入的re模块检查字符串是否匹配:

if re.match('^[a-zA-Z]+', line) is not None:
    print line

开始于:^

一个或多个匹配字符:+

http://www.fon.hum.uva.nl/praat/manual/Regular_expressions_1__Special_characters.html

尝试以下行而不是startswith。

if re.match("^[a-zA-Z]", line):
       print line
import re

file = open('repCleanSubs2.txt')
for line in file:
    match = re.findall('^[a-zA-Z]+', line)
    if match:
        print line, match

^符号表示从行首开始匹配,a-zA-Z之间的字母

+表示必须在[a-zA-Z]中找到至少一个或多个字符

re.findall将返回在提供给它的字符串中可以找到的所有模式的列表

相关问题 更多 >