2017-08-20 2 views
0

私は詰まっています&私はあなたの助けが必要です。ここで私はこのプログラムがしたいものです。私はスピンテキストを含む1つのテキストファイルを持っていますスピンテキスト{何かそこに|ソース|何か} baz {なぜこれらの人をもっと見つけません} &私はwrite.txtという名前の別のテキストファイルを持っていますspin.txtファイル&は、write.txtファイルに書き込みます。私がしたこと。すべてがうまくいっていますが、私が得ている唯一の問題は、write.txtファイルに書き込むときに、括弧「&」を追加したようなものですが、このテキストを書いて欲しいとは思っていません。 [:-2 2]1つのファイルからスピンテキストを読み込み、python3で括弧を付けないで別のテキストファイルに書き込むことはできますか?

はちょうどそれが動作するコードでこれを変更し、私は窓10

**My code :-** 

import re 
import itertools 

p = re.compile("(\{[^\}]+\}|[^\{\}]*)") 

spin_comments =open("C:\\Users\\Desktop\\spin.txt","r") 
file = str(spin_comments.readlines()) 

frags = p.split(file) 

def options(s): 
    if len(s) > 0 and s[0] == '{': 
     return [opt for opt in s[1:-1].split('|')] 
    return [s] 

opt_lists = [options(frag) for frag in frags] 

write_text = open("C:\\Users\\Desktop\\write.txt","w") 


for spec in itertools.product(*opt_lists): 
    a = ''.join(spec) 
    write_text.write(a + '\n') 
    print(a) 
write_comment.close() 
+1

'opt_lists'は' list'の 'list'ですので、必然的に' spec'は常に 'list'ですので、大括弧が表示されます。データ構造を変更するか、 'a = '' .join(spec)[1:-1]'のように、大括弧を 'a'から削除してください。 – EsotericVoid

+0

ええ、それだけで角括弧が削除されています。私はそれらの両方を削除したい。 – Rahul

+0

それは終わってしまった。あなたの助けをありがとうございます@Bit – Rahul

答えて

0

'' .join(スペック)上のpython 3回使用しています。返信ありがとう@bit

+0

FYI: 'readlines'が返すものを見てください。あなたの余分なキャラクターはこれから来ています。複数行の場合は、 'read'を使って試してみてください。 –

+0

@GlennRogersいいえ、彼は直後に正規表現を解析しているので、問題ではありません。余分な文字は、 'options'関数の出力が処理される方法のために表示されます。 – EsotericVoid

関連する問題