2017-03-16 14 views
0

リストの内容を新しいファイルに書き込むために、リストの内容を空白行なしでテキストファイルに書き込もうとしています。私の問題は、複数のcsvファイルをループして1つのリストにまとめることで、アイテムから大規模なリストを作成することによるアーティファクトのようです。たぶん私はちょうど個々の言葉の後に "\ n"を修正するためにリストを別々に組み合わせる必要がありますが、リストの間ではありません...?テキストファイルへの空のスペースの書き込みを避ける

some_list = [] # list of csv files 
for i in os.listdir('filepath_to_directory_with_csv_files'): 
    some_list.append(i) 
print (some_list) 

[ 'A_test.csv'、 'B_test.csv']

CombinedList = [] # list containing all the rows in each csv file 
for InFileName in some_list: # for loop to capture data from all csv files 
    InFile = open(InFileName, 'r') 
    PathwayList.append(InFile.readlines()) 
    InFile.close() 

print (CombinedList) 

は[ 'この\ N'、N 'を\さ'、 'の\ n'、 'テスト' ]、[ 'この\ nは'、 'Bを\ n'、 'テスト']

New_list = [item for sublist in CombinedList for item in sublist] 
print (New_list) 

[ 'これに\ n'、 'は、nを\さ'、「\ nの '\ nは' '、' test '、' This \ n '、' is \ n '、' B \ n '、' test ']

with open("CombinedList.txt", "w") as f: 

    for line in New_list: 
     f.write(line + "\n") 
    print('File Successfully written.') 

ファイルが正常に書き込まれました。

+0

だから問題は何ですか? –

答えて

0

2重改行を避けるには、まずファイルから読み込んだ各行から '\ n'を取り除き、次に '\ n'をすべてに追加します。

PathwayList.append([line.rstrip('\n')+'\n' for line in InFile]) 

出力:[['This\n', 'is\n', 'A\n', 'test\n'], ['This \n', 'is\n', 'B\n', 'test\n']]

+1

注: 'f.write'コールから' + "\ n" 'を削除する必要があります。 :-) – ShadowRanger

0

あなたはおそらく(100%はっきりしていないであなたの質問が策定だけで推測するので)したいことは次のとおりです。

CombinedList = [['This\n', 'is\n', 'A\n', 'test'], ['This \n', 'is\n', 'B\n', 'test']] 
# New_list = ['This\n', 'is\n', 'A\n', 'test', 'This \n', 'is\n', 'B\n', 'test'] 
for item in CombinedList: 
    line = '' 
    for word in item: 
     line += word.replace('\n', ' ') 
    f.write(line + "\n") 
    # print(line) 

これは(プリント)を書き込みます:

This is A test 
This is B test 
関連する問題