2017-02-14 15 views
0

これは、csvファイルプロセスのトリミングに関連しています。 4つの列を持つmar形式のcsvファイルがありますが、最後の列にはカンマが多すぎます(および不明な数)。Python:最初のn番目の一致する文字を別の文字に置き換えます。

デリミタを「|」などの別の文字に置き換えたい場合は、 たとえば、 "a | b | c | d、e、f"にstring = "a、b、c、d、e、f"を入力します。

次のコードは機能しますが、大容量のtxtファイルを効率的に処理できます。

sample_txt='a,b,c,d,e,f' 
temp=sample_txt.split(",") 
output_txt='|'.join(temp[0:3])+'|'+','.join(temp[3:]) 
+0

多くの行や非常に長い行のためにテキストが大きくなりますか?あなたは短いラインがたくさんある場合、私はあなたがすでに持っているものよりもはるかによくすることができるとは思わない... – Julien

答えて

1

Pythonはstr.replaceで、これを行うのに最適な方法があります(あなたがselfを数える場合または第四)

>>> sample_txt='a,b,c,d,e,f' 
>>> print(sample_txt.replace(',', '|', 3)) 
a|b|c|d,e,f 

str.replaceが起こるための代替の最大数を指示され、オプションの三番目の引数を取ります。

+1

素敵できちんとしたソリューションをありがとう。私はPythonの基本的な機能の詳細をもう一度調べる必要があります。 – notilas

1
sample_txt='a,b,c,d,e,f' 
output_txt = sample_txt.replace(',', '|', 3) 
関連する問題