2

我是编程新手,也是这个网站的新手,所以对于我可能会说或问的任何愚蠢或“新奇”的事情,我提前道歉。

我目前正在尝试在 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 和 Internet 的其他部分中进行了很多环顾四周,但我没有找到任何可以帮助我完成最后一步的东西。

任何意见是极大的赞赏。如果您需要更多信息,我很乐意为您提供。

谢谢!

4

2 回答 2

1

在您的 pastebin 代码中,问题出在:

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

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

foundInstances.append(['http://' + str(num) + 'endofsite', desc])
于 2012-12-14T20:36:02.150 回答
0

我刚刚测试了您发布的代码

foundInstances = [[1,2],[3,4]]

它工作得很好。它肯定会以格式生成输出 csv

1,2
3,4

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

import pdb; pdb.set_trace()

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

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

于 2012-12-14T20:19:53.173 回答