我已经搜索过高低分辨率来解决这种情况,并测试了几种不同的方法,但到目前为止我还没有运气。基本上,我有一个文件,其中包含以下格式的数据,我需要将其转换为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个条目,因此手动编辑这将需要花费大量时间。
如果有人有任何建议,我将非常感激。
非常感谢。
答案 0 :(得分:2)
如果您只想用逗号替换空格,您可以这样做:
line = ','.join(line.split())
你必须只在其他所有行上执行此操作,但从您的问题来看,听起来您已经知道如何使用其他所有行。
答案 1 :(得分: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'你把它作为标题放在你的例子的奇数行上。