2

私は R の世界から Python を初めて使用し、データ列で構造化された大きなテキスト ファイルに取り組んでいます (これは LiDaR データであるため、通常は 6000 万以上のレコードがあります)。

forファイルを読み取って行をループすることなく、このような大きなファイルのフィールド区切り文字を変更することはできますか (たとえば、タブ区切りからコンマ区切りに) 。

4

4 に答える 4

6

いいえ。

  • でファイルを読み取ります
  • 行ごとにセパレーターを変更する
  • 各行を書き戻す

これは、ほんの数行の Python で簡単に実行できます (テストされていませんが、一般的なアプローチは機能します)。

# Python - it's so readable, the code basically just writes itself ;-)
#
with open('infile') as infile:
  with open('outfile', 'w') as outfile:
    for line in infile:
      fields = line.split('\t')
      outfile.write(','.join(fields))

私はRに精通していませんが、これのためのライブラリ関数があれば、おそらくまったく同じことをしています.

このコードはファイルから一度に 1 行しか読み取らないため、ファイルが物理 RAM よりも大きくなる可能性があることに注意してください。完全に読み込まれることはありません。

于 2011-05-18T06:33:37.313 に答える
1

Linux の tr コマンドを使用して、任意の文字を別の文字に置き換えることができます。

于 2011-12-12T16:17:29.487 に答える
0

できませんが、ジェネレーターを確認することを強くお勧めします。

ポイントは、データを処理するためにデータを書き込んでメモリに保存する必要なく、より高速で適切に構造化されたプログラムを作成できることです。

例えば

file = open("bigfile","w")
j = (i.split("\t") for i in file)
s = (","join(i) for i in j)
#and now magic happens
for i in s:
     some_other_file.write(i)

このコードは、1 行だけを保持するためにメモリを消費します。

于 2011-05-18T06:56:10.560 に答える