我正在尝试将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中的一列,而是在第一段结尾处结束,下一行从第二段开始。期望的输出是将两个段落放在同一行的同一列中。在
代码完美地工作,并创建您想要的输出。然而,并不是所有的电子表格都能将反勾号识别为封闭标记。在
您看到的问题是,您正在使用的电子表格程序的csv导入功能没有将反勾号(在代码中使用)标识为引号/字段括起来的标记。如您所知,标准引号括起来的标记是单引号和双引号。在
要实现这一点,您使用的csv导入程序需要了解反勾号是引号括起来的标记。LibreOffice Calc足够灵活地学习这一点,如下面的屏幕截图所示,学习之后,它将精确地导入csv,整个多行字段都在一行/列中。(我在示例中添加了另一行数据。)
至于Excel。。。好。。。是的,代码需要修改,因为反勾号是Excel中无法识别的引号。请参见this SuperUser discussion以获取更多详细信息。您的示例文本中没有引号,因此,也许您可以使用更标准的引号括起标记来屈从于Excel的限制,如有必要,可根据超级用户讨论通过双引号来转义任何所附的引用。在
相关问题 更多 >
编程相关推荐