使用Python编写带分隔符的CSV文件

时间:2012-12-14 20:01:39

标签: python csv

我是编程的新手,也是本网站的新手,所以我提前道歉,我可能会说或要求任何愚蠢或“新生”。

我目前正在尝试在python中编写一个脚本,该脚本将获取项目列表并将其写入csv文件等。如果有意义的话,列表中的每个项目实际上都是两个字符串的列表。从本质上讲,格式是[[Google,http://google.com],[BBC,http://bbc.co.uk]],但当然具有不同的价值。

在CSV中,我希望它显示为第一列中每个列表的第一项和第二列中每个列表的第二项。

这是我需要帮助的代码的一部分:

with open('integration.csv', 'wb') as f:
    writer = csv.writer(f, delimiter=',', dialect='excel')
    writer.writerows(w for w in foundInstances)

无论出于何种原因,似乎都忽略了分隔符。当我在Excel中打开文件时,每个单元格都有一个列表。使用旧示例,每个单元格都有“Google,http://google.com”。我希望Google位于第一列,http://google.com位于第二列。所以基本上是“Google”和“http://google.com”,然后是“BBC”和“http://bbc.co.uk”。这可能吗?

在我的代码中,foundInstances是包含所有项目的列表。总的来说,脚本运行正常,但我似乎无法完成最后一步。我已经在stackoverflow和互联网的其余部分做了很多工作,但我没有找到任何帮助我完成最后一步的事情。

非常感谢任何建议。如果您需要更多信息,我很乐意为您提供。

谢谢!

2 个答案:

答案 0 :(得分:1)

在你的pastebin代码中,问题在于:

foundInstances.append(['http://' + str(num) + 'endofsite' + ', ' + desc])

在这里,对于数据中的每一行,您创建一个已经包含逗号的字符串。这不是csv模块所需要的。 CSV模块从数据中生成逗号分隔的字符串。您需要将数据作为项目[col1, col2, col3]的简单列表提供给它。你正在做的是["col1, col2, col3"],它已经将数据打包成一个字符串。试试这个:

foundInstances.append(['http://' + str(num) + 'endofsite', desc])

答案 1 :(得分:0)

我刚测试了你用

发布的代码
foundInstances = [[1,2],[3,4]]

它工作正常。它肯定会以

格式生成输出csv
1,2
3,4

所以我假设您的foundInstances格式错误。如果以复杂的方式构造变量,则可以尝试添加

import pdb; pdb.set_trace()

在csv代码中使用实际变量之前。这使您可以使用python调试器在运行时检查变量。有关使用详情,请参阅Python Debugger Reference

作为旁注,根据PEP-8 Style Guide,变量的名称应该是Python中的found_instances