1

私はコーディングに非常に慣れていません.SOでいくつかの同様の質問を見ましたが、私が持っている質問に実際に対処したものはありません. 比較的簡単な作業だと思って学習用に始めたのですが、思ったよりも苦労しています。

このようなことが発生する状況がいくつかある .txt ドキュメントがあるとします。

次の答えは受け入れられます:
caía

文字列を分割し、答えだけをリストに追加する方法を見つけようとしています。

1本の弦だけを扱っていたら、このようになりますか?

    txt = """
    The following answer is acceptable: 
    caía

    more stuff down here...
    """
    list = []
    try = txt.split(": ") # I know this is wrong...  
    # How can I get from the colon (or newline) to the end of the answer?
    list.append(try)

答えの最初から答えの終わりまでをつかんでリストに入れる方法が本当にわかりません。より複雑にするために (少なくとも私にとっては)、このような 6 つまたは 7 つの回答を含む .txt ファイルを使用しているため、すべての回答をリストに追加する方法を理解する必要があります。ある種のループが必要だと思いますか?txt.readlines を使用して行ごとに分割しますか? または、私が現在よく知らないもの...

また、私の計画では、.txt ファイル内のさまざまなテキスト セットを頻繁に切り替えることでした。構文は常に同じままですが、回答の数はさまざまであるため、プログラムに n 個の回答があることを認識させ、それにすべての回答を追加する必要があることを理解する必要があることはわかっています。ドキュメントの最後に到達するまで、私が話していたリスト。

このサイトは質問に関してかなり厳しいことを知っているので、すべてのルールを守っていると思います。私はちょうどこのことを学んでいて、それは本当に私の情熱の骨に当たっています. 私は実際に誰からも学ぶ経験がなく、本から学ぶことは私に多くの疑問を残します。これで問題ないことを願っています。

4

2 に答える 2

0

あなたは問題を過度に複雑にしています。あなたがしたいことは、行がコロンで終了するタイミングを認識し、終了する場合は次の行に値を格納することです。

txt = """
The following answer is acceptable: 
caía

more stuff down here...
"""
results = []

chopped_up_text = txt.split('\n')
for i, line in enumerate(chopped_up_text):
    if line[-1]==":" :
        results.append(chopped_up_text[i+1])

これは一種のエレガントではありませんが、機能します。

編集:複数の列挙された回答を持つ質問について:

txt = """
The following answer is acceptable:
answer1
answer2
answer3

more stuff down here...
"""
results = []

chopped_up_text = txt.split('\n')
n=0
while chopped_up_text:    
    line = chopped_up_text.pop(0)
    try:
        if line.strip()[-1]==":" :
            line = chopped_up_text.pop(0)
            while line not in ("\n", "", " ", None): 
                results.append(line)
                line = chopped_up_text.pop(0)
    except:
        continue

遅いです。このコードはもっときれいなはずです。しかし、あなたはその考えを理解します。

于 2013-02-21T05:55:37.773 に答える
0

答えの前の行が1行だけだと仮定すると

lines = [line.strip() for line in open('some.txt')]
nlines=[]
for line in lines:
    if line[-1]==':': 
        nlines.append(':'+line)
    else:
        nlines.append(line)
total="\n".join(nlines)
temp=total.split(':')
answers=temp[2::2]
for ans in answers:print ans

some.txt

first answer:
first line 1
second line 1
third line 1
second answer:
first line 2
secon line 2
third line 2
third answer:
first 3
second 3
third 3
fourth answer:
first 4
second 4
third 4
fourth 4

出力

first line 1
second line 1
third line 1


first line 2
secon line 2
third line 2


first 3
second 3
third 3


first 4
second 4
third 4
fourth 4
于 2013-02-21T06:37:31.553 に答える