2017-11-18 21 views
0

Pythonを使用して.txtファイルにカンマを追加します。Pythonを使用してテキストファイルにカンマを挿入します。

with open('filename.txt', 'r') as f: 
    fileText = f.read() 

filedata = fileText.split('\n') 

上記のコードは、ファイルを読み取り、改行で分割します。

ABC name1, name2, name3 

XYZ nameA, [nameBa nameBb], nameC 

私は最初の文字列の後にコンマを追加する必要があります。

テキストファイルは次のようなものです。ファイルには4つまたは5つの文字列が含まれています。それらのほとんどは最初のものを除いてコンマで区切られています。

私は2つのループを使って同じことをしていますが、私がテキストファイルにPythonを使って書き込んで、コンマのみを挿入すればもっと良いと思っています。すべての弦。

期待される結果:

ABC, name1, name2, name3 

XYZ, nameA, [nameBa nameBb], nameC 

私はキー(ABCXYZ)として最初の文字列を使用することができるよう、より良いこととのいずれかの値にか作られたリストとして残りを保存するかもしれないlist構造が、dictを使用しています他のすべての弦のアップ。

テキストファイルに特定の場所(つまり、各行の左から4番目の文字)にコンマを挿入するのに役立つ人はいますか?あなたが構築することができます

+0

あなたは 'filedata'右にある文字列のリストを持っていますか?このリストをループして各文字列を ''文字で 'split()すると、対応するリストの最初の項目は' ["ABC"、 "name1"、..] 'となり、 '()'を使って必要な項目をjoin()してください。 –

+0

ありがとう。各文字列を区切り文字で分割すると、結果が["ABC"、 "name1"、..]でなく、ABC name1、name2となります。 – naveed

答えて

0

は、このようなdictは:

d = {} 
with open('filename.txt', 'r') as f: 
    for line in f: 
     k, v = line.split(' ', 1) 
     d[k.strip()] = [s.strip() for s in v.split(',')] 
+0

ありがとうございました。上記のコードを使って、最初の文字列と2番目の{{ABC \ tname1、 ':[name2 name3]等のdictキーを取得します。キーと私はレコードをそれぞれの行に分割していますが、最初の2回のスティッキングでは、\ tで区切られていて、コンマで区切られています。 – naveed

0
with open(file, 'r+') as file 

+rはラインに追加します。この質問をチェックして、基本的には同じ:Python insert characters into txt file without overwrite

+0

私はr、a、wなどを使用しましたが、テキストファイルに正確な場所に移動する方法を理解しようとしています。各行の4番目の文字をカンマで区切ります。それはバイト位置ですか? – naveed

0

あなたがあなたの主な目標は言ったように:

私はどちらか 値のとして、または最初のキーとして文字列(ABC、XYZ)とストア残りを使用することができます他のすべての文字列で構成されるリスト

あなたがここに正規表現を使用することができ、そして、あなたは、カンマを追加せずに結果を得ることができます。

import re 
pattern=r'(^\w+)\s.(\w.+)' 
final_dict={} 
with open('file.txt','r') as f: 
    for line in f: 
     match=re.finditer(pattern,line) 

     for find in match: 
      final_dict[find.group(1)]=[find.group(2)] 

print(final_dict) 

出力:

{'XYZ': ['nameA, [nameBa nameBb], nameC'], 'ABC': ['name1, name2, name3']} 
+0

ありがとうございます。何らかの理由で、値が{'XYZ':['ameA、nameB']、 'ABC':['ameD、nameE']などのように切り捨てられていました。パターンから切り捨てることなく、完全な値を表示します。 ta – naveed

+0

私のソリューションがあなたが答えを受け入れるのを助けたなら、@naveed –

関連する問題