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 并用逗号替换每隔一行的数字之间的空格,但到目前为止还没有成功。我承认我通常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())

您只需要在其他每一行上执行此操作,但从您的问题来看,您似乎已经知道如何与其他每一行一起工作。

于 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 回答