に基づいて必要な...パイソン:ラインからの文抽出 - 正規表現はややここでのpython /プログラミング初心者の基準
を、私は、テキストの行から抽出する文章を扱うことができる正規表現を思い付くしようとしていますファイルを作成し、リストに追加します。コード:
import re
txt_list = []
with open('sample.txt', 'r') as txt:
patt = r'.*}[.!?]\s?\n?|.*}.+[.!?]\s?\n?'
read_txt = txt.readlines()
for line in read_txt:
if line == "\n":
txt_list.append("\n")
else:
found = re.findall(patt, line)
for f in found:
txt_list.append(f)
for line in txt_list:
if line == "\n":
print "newline"
else:
print line
上記のコードの最後の5行ごとのように印刷出力: 'SAMPLE.TXT' の
{Hello there|Hello|Howdy} Dr. Munchauson you {gentleman|fine fellow}!
What {will|shall|should} we {eat|have} for lunch? Peas by the {thousand|hundred|1000} said Dr. Munchauson; {that|is} what he said.
newline
I am the {very last|last} sentence for this {instance|example}.
内容:私はで遊んでてきた
{Hello there|Hello|Howdy} Dr. Munchauson you {gentleman|fine fellow}! What {will|shall|should} we {eat|have} for lunch? Peas by the {thousand|hundred|1000} said Dr. Munchauson; {that|is} what he said.
I am the {very last|last} sentence for this {instance|example}.
数時間の正規表現と私はそれをクラックするように見えることはできません。正規表現は、for lunch?
の最後には一致しません。したがって、これらの2つの文What {will|shall|should} we {eat|have} for lunch? Peas by the {thousand|hundred|1000} said Dr. Munchauson; {that|is} what he said.
は分離されません。それは私が望むものです。正規表現のための
いくつかの重要な詳細:
- すべての文章は常にピリオドで終わるだろう、感嘆符や疑問符
- すべての文章は常に{」中括弧の少なくとも1組が含まれています} また、誤解を招くようなことはありません。すべての文章の最後の括弧の後に。したがって、
Dr.
は、各文の中括弧の最後の対の前になります。これは私が '}'を使って私の正規表現の基底にしようとした理由です。このようにして、例外アプローチを使用しないで、Dr.
,Jr.
、approx.
というような文法の例外を作成することを避けることができます。このコードを実行するファイルごとに、私は個人的に、最後の '}'の後に誤解を招く期間がないことを確認します。
私が欲しいの出力はこれです:私が持っている
{Hello there|Hello|Howdy} Dr. Munchauson you {gentleman|fine fellow}!
What {will|shall|should} we {eat|have} for lunch?
Peas by the {thousand|hundred|1000} said Dr. Munchauson; {that|is} what he said.
newline
I am the {very last|last} sentence for this {instance|example}.
この「{こんにちは|こんにちは| Howdy}博士Munchausonあなた{紳士|ファインフェロー}!」誤解を招く "。ここでは、最初の期間は、この "文"の最後の括弧の後にもあります。 "{こんにちは|こんにちは|ハウディ} – oyss
その文では、 '!'文の終わりであり、 '!'その文の最後の '}'の後に来ます。私がOPで説明しているように、文はピリオド、感嘆符、または疑問符で終わることができます。 –