我到处寻找解决这种情况的方法,并测试了几种不同的方法,但到目前为止我还没有任何运气。基本上,我有一个具有以下格式的数据文件,我需要将其转换为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并用逗号替换其他行中数字之间的空格,但到目前为止还没有取得任何成功。我承认我通常从CSVs中解析,所以原始文本对我来说是个挑战。我需要维护每组数字之上的字符串格式。
我希望CSV的格式如下:
foo bar
0,8
foo bar
0,9
foo bar
0,10
foo bar
0,11
大约有5万条条目,所以手工编辑需要花费大量的时间。
如果有人有任何建议的话,我将非常感激。
非常感谢。
发布于 2012-07-22 10:54:22
如果我正确地理解了您的需求,那么您需要在所有行上使用条带(),在偶数行(从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-22 10:50:32
如果您只想用逗号替换空格,您可以这样做:
line = ','.join(line.split())
你只能在每一条线上做这件事,但从你的问题上看,你似乎已经知道如何处理每一行了。
https://stackoverflow.com/questions/11603024
复制