使用Python光标到Csvcsv.writer.writerows

2024-10-04 05:31:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将MySQL select语句的结果写入csv。在

我使用MySQLdb来选择数据,它返回一个游标。在

然后我将光标传递到一个函数中,该函数将光标写入csv:

def write_cursor_to_file(cursor, path, delimiter='|', quotechar='`'):
    with open(path, 'wb') as f:
        csv.writer(f, delimiter=delimiter, quoting=csv.QUOTE_ALL, \
            quotechar=quotechar).writerows(cursor)

我遇到的问题是MySQL数据库中有一列可以包含段落。这个csv.writer正在查看该列并将段落之间的分隔符写成两个单独的行。在

示例:

^{pr2}$

因此,不是将上面的文本块写入csv中的一列,而是在第一段结尾处结束,下一行从第二段开始。期望的输出是将两个段落放在同一行的同一列中。在


Tags: csv数据path函数mysql语句selectcursor
1条回答
网友
1楼 · 发布于 2024-10-04 05:31:20

代码完美地工作,并创建您想要的输出。然而,并不是所有的电子表格都能将反勾号识别为封闭标记。在

您看到的问题是,您正在使用的电子表格程序的csv导入功能没有将反勾号(在代码中使用)标识为引号/字段括起来的标记。如您所知,标准引号括起来的标记是单引号和双引号。在

要实现这一点,您使用的csv导入程序需要了解反勾号是引号括起来的标记。LibreOffice Calc足够灵活地学习这一点,如下面的屏幕截图所示,学习之后,它将精确地导入csv,整个多行字段都在一行/列中。(我在示例中添加了另一行数据。)

enter image description here

至于Excel。。。好。。。是的,代码需要修改,因为反勾号是Excel中无法识别的引号。请参见this SuperUser discussion以获取更多详细信息。您的示例文本中没有引号,因此,也许您可以使用更标准的引号括起标记来屈从于Excel的限制,如有必要,可根据超级用户讨论通过双引号来转义任何所附的引用。在

相关问题 更多 >