2016-04-30 12 views
2

私の爬虫類亜種すべてを私のpythonプログラムで印刷しようとしています。私は亜種のDNA群とその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の記述にはいくつかの構文がありますか?

ありがとうございます!

+1

を行うことができますあなたは 're'が、あなたをインポート – danidee

+0

ああ、私はそれを今修正して参照してください。ありがとう。 – SweetJD14

答えて

1

startswith正規表現は解釈されません。 ^

一つ以上の一致文字:と

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

+0

ありがとう、この正規表現の例でプラス記号はどういう意味ですか? – SweetJD14

+0

ちょっと別の簡単な質問ですが、同じ 'if'文でアルファベット順にソートする方法はありますか? – SweetJD14

+0

出力を並べ替えることはどういう意味ですか? re.matchはオブジェクトを返します。 – fips

0

次のことを試してみてください文字列が一致するかどうかを確認するためにインポートしたreモジュールを使います行はstartswithの代わりに。

if re.match("^[a-zA-Z]", line): 
     print line 
1
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]に少なくとも1つの以上の文字が

re.findall意志を見つけなければならないことを意味し、行の先頭からのマッチを意味あなたが入力した文字列の中にあるすべてのパターンのリストを返します

+0

.findallは私が必要としていたものです!ありがとうございました。 – SweetJD14

0

その私のために働いて、これを試してみてください:

import re 
file = open('repCleanSubs2.txt') 
for line in file: 
if (re.match('[a-zA-Z]',line)): 
    print line 
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 
-1

それが正規表現せずに

data = open('repCleanSubs2.txt').read().splitlines() ## Read file and extract data as list 

print [i for i in data if i[0].isalpha()] 
+0

このコードスニペットをご利用いただきありがとうございます。適切な説明(* meta.stackexchange.com/q/114762)は、*なぜ*これが問題の良い解決策であるかを示すことで長期的な価値を向上させ、将来の読者にとって他の同様の質問。あなたの前提を含め、あなたの答えを[編集]して説明を加えてください。 –

+0

@TobySpeight今は正しいですか? –

関連する問題