次のような行を含む csv ファイルがあります。
,,,,,,,,,,
それは10コンマです。最後の (つまり 10 番目の) コンマだけを削除して、行を次のように変更したい:
,,,,,,,,,
このようなケースを扱った経験のある人はいますか? vim テキストエディタも使用します。そのため、python スクリプトまたは vim を使用したテキスト編集コマンドを使用したヘルプをいただければ幸いです。
みんなありがとう!
vimの現在の行の最後のコンマを削除します:
:s/,$//
行nからmについても同じです。
:n,ms/,$//
ファイル全体についても同じです。
:%s/,$//
探しているもので質問を更新したら、コードを更新します。
commas = ",,,,,,,,,,,"
print commas.replace(","*10, ","*9)
特定の行の最後のカンマを削除したい場合は、次のようにします。
import re
commas = """,,,,,,,,,,
,,,,,,,,,,"""
print re.sub(r',$', '', commas, re.MULTILINE)
また、任意のファイルで、10 個のコンマしかない行を 9 個のコンマにしたい場合:
import re
commas = ",,,,,,,,,,\n,,,,,,,,,,\n,,,,,,,,,,"
print re.sub(r'^,{10}$', ','*9, commas, re.MULTILINE)
私は使うだろう:
sed -i 's/,$//' file.csv
私は VIM の通常のコマンドが大好きです。したがって、この CSV ファイルから最後の「列」を削除する場合は、次のようにします。
:%normal $F,D
つまり、このファイル ( %
) のすべての行で、次の手順 ( normal
)を実行します。
$
- 行末に移動します。F,
- カーソルをこの行のプレビュー カンマに移動します。D
- カーソル位置から行末まで削除;また、これは範囲 (1 行目から 20 行目まで) で使用できます。
:1,20normal $F,D
しかし、その間にデータがないコンマがたくさんあるだけの場合は、次のように簡単に実行できます。
:%normal $X