我正在尝试在我的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
语句中是否缺少某些语法?
谢谢!
答案 0 :(得分:1)
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
答案 1 :(得分:1)
import re
file = open('repCleanSubs2.txt')
for line in file:
match = re.findall('^[a-zA-Z]+', line)
if match:
print line, match
^
符号表示从该行的开头匹配,a-z
和A-Z
之间的字母
+
表示必须找到[a-zA-Z]
中的至少一个或多个字符
re.findall
将返回您在提供给它的字符串中可以找到的所有模式的列表
答案 2 :(得分:0)
尝试以下行而不是startswith。
if re.match("^[a-zA-Z]", line):
print line
答案 3 :(得分:0)
试试这个,它为我工作:
import re
file = open('repCleanSubs2.txt')
for line in file:
if (re.match('[a-zA-Z]',line)):
print line
答案 4 :(得分:0)
不使用re
:
import string
with open('repCleanSubs2.txt') as c_file:
for line in c_file:
if any([line.startswith(c) for c in string.letters]):
print line
答案 5 :(得分:0)
尝试一下
file = open("abc.xyz")
file_content = file.read()
line = file_content.splitlines()
output_data = []
for i in line:
if i[0] == '[a-zA-Z]':
output_data.append(i)
print(i)
答案 6 :(得分:-1)
可以在没有正则表达的情况下完成
data = open('repCleanSubs2.txt').read().splitlines() ## Read file and extract data as list
print [i for i in data if i[0].isalpha()]