2017-11-22 7 views
-1

PythonでRegexを使用してMatch()を使用すると、すべての出力の最後に余分なカンマが表示される理由がわかりません。何か案は ?ありがとう。PythonでRegexのマッチ関数を使用すると末尾にカンマが出力される

マイコード:

import re 

yyyyfile = open("yyyy.txt",'w') 

text = open('final.txt') 

for line in text: 

    x = re.match('.*?^([0-9][0-9][0-9][0-9])$.*', line) 

    if x: 

     print >> yyyyfile, x.groups() 

電流出力:

('1573',)

('1595',)

('1929',)

('1933',)

所望の出力:

('1573')

('1595')

('1929')

('1933')

+0

ファイルの行の例をいくつか表示できますか? (final.txtから) – Marathon55

+0

タプルに何も問題ありませんか? – Jan

+0

あなたの正規表現は何をすべきですか? '[0-9] {4}'はそのトリックを行うべきだと感じていますか? – Deuce

答えて

4

re.matchのグループの出力は()グループのすべてであるためです捕まったタプルです。
x.group(1)などを使用してください。

+0

素晴らしい!それが問題を解決しました。どうもありがとう。 – user8929822

0

私は内部yyyy.txt何であるかを知らないと、あなたはそれを印刷したいがfinal.txtを仮定すると、テキストが含まれ、なぜあなたはしてファイルを開く必要があります。

with open('final.txt', 'r') as f: 
    text = f.read() 

解析は、このように動作します:

import re 

text = '''1235, dfx as nxcn 1229 nxcn 32 4 0 9877''' 

matches = re.findall('(\d{4})', text) 

for match in matches: 
    print(match) 
+0

お問い合わせいただきありがとうございます。 指定したコードを実行した後、次のエラーが発生しました。 TypeError: 'NoneType'オブジェクトは反復可能ではありません – user8929822

+0

検証可能な例を提供するために私の答えを更新しました。また、私は正規表現を簡略化しました。 – mrCarnivore

0

あなたはマッチを使用しているため、余分なコンマはありません。このコンマを取得する理由は、タプルを印刷していることです。このような望ましい結果を得ることができます

print >> yyyyfile, '(%s)' % x.group(1)