0

この状況の解決策を高低で検索し、いくつかの異なる方法をテストしましたが、これまでのところ運がありません. 基本的に、CSV に変換する必要がある次の形式のデータを含むファイルがあります。

(previously known as CyberWay Pte Ltd)
0 2019
01.com
0 1975
1 TRAVEL.COM
0 228
1&1 Internet
97 606
1&1 Internet AG
0 1347
1-800-HOSTING
0 8
1Velocity
0 28
1st Class Internet Solutions
0 375
2iC Systems
0 192

re.sub を使用して、1行おきに数字の間の空白をカンマに置き換えてみましたが、これまでのところ成功していません。私は通常、CSVから解析することを認めているので、生のテキストは私にとって少し難しいものでした。それぞれの数値セットの上にある文字列形式を維持する必要があります。

CSVを次のようにフォーマットすることをお勧めします:

foo bar
0,8
foo bar
0,9
foo bar
0,10
foo bar
0,11

約 50,000 のエントリがあるため、これを手動で編集すると、非常に時間がかかります。

誰か提案があれば、私はとても感謝しています。

どうもありがとうございました。

4

2 に答える 2

2

空白をカンマに置き換えたい場合は、次のようにします。

line = ','.join(line.split())

これを1行おきに行う必要がありますが、あなたの質問からは、1行おきに作業する方法をすでに理解しているようです。

于 2012-07-22T18:50:32.633 に答える
0

要件を正しく理解している場合は、すべての行にstrip()が必要であり、偶数行(1から始まる行)の空白に基づいて分割する必要があります。

import re

fp = open("csv.txt", "r")
while True:
    line = fp.readline()
    if '' == line:
            break
    line    = line.strip()
    fields  = re.split("\s+", fp.readline().strip())
    print "\"%s\",%s,%s" % ( line, fields[0], fields[1] )
fp.close()

出力はCSVです(入力で引用符が使用されている場合は、引用符をエスケープする必要がある場合があります)。

"Content of odd line",Number1,Number2

ただし、例の奇数行のヘッダーとして配置する「foo、bar」はわかりません。

于 2012-07-22T18:54:22.447 に答える