2016-08-31 9 views
0

私は最初にコーディングして、覚えていることを覚えています。Pythonで「きれいな」一致結果を得るには

Dear Mr. ['XXXX'] 
私が思っていた

を返し

import re 
f = open('aaa.txt', 'r') 
string=f.read() 
c = re.findall(r"Guest last name: (.*)", string) 
print "Dear Mr.", c 

Dear Mr. XXXX 

代わり

のような結果を得るためにどのような方法があります: 私はこれを使用していますか?

ありがとうございます。

+0

あなたはその行の最後までしか名前がないのは本当ですか?私は '。*' - 'r 'ではなく' \ S + 'のようなものを使用したいと思います。ゲストの姓:(\ S +)" '空であれば '\ S *'となります。とにかく、使用する前に結果を確認してください。 –

+0

いつでも何かが['something']を返します。つまり、配列内にあり、[n]でアクセスする必要があります.nは配列内の要素の位置です。 –

+0

幸いにも、私がPythonで読んでいるエクスポートされた文書は、1行に1文字列があるので、正規表現ではとても簡単です。しかし、私はまだ実際のコードと正規表現を学ぶために、より正確にしようとします。 –

答えて

0

あなたが唯一の試合予想される場合は[はいre.searchを使用

print "Dear Mr.", c[0] 
0

リスト内の最初の項目を取る必要があります:あなたは複数の一致を期待していた場合

re.search(r"Guest last name: (.*)", string).group(1)` 

のfindAllです。正規表現(.*?)?を追加して、貪欲ではないキャプチャを追加したいと思うかもしれませんが、もう少し具体的で、必要な名前/句の次の文字までキャプチャしたいと思うかもしれません。

+0

ありがとう、私はより複雑な正規表現を見ていきます。今はスケルトンを構築中です!私はre.searchを使ってみましたが、 "<_sre.SRE_Match object at 0x000000000361DBE8>"を返します。私はそれがマッチを見つけたことを意味し、マッチはどこにあるのですか、私の出力には実際のマッチが必要です:) –

関連する問題