【发布时间】:2020-05-20 22:29:04
【问题描述】:
我正在尝试将数据帧写入 CSV。许多传入数据是用户生成的,可能包含特殊字符。我可以设置escapechar='\\'(例如),但是如果数据中有反斜杠,它会被写为"\",它被解释为转义的双引号,而不是包含反斜杠的字符串。如何转义 escapechar (即,我如何通过转义反斜杠来让 to_csv 写入 \\?)
示例代码:
import pandas as pd
import io, csv
data = [[1, "\\", "text"]]
df = pd.DataFrame(data)
sIo = io.StringIO()
df.to_csv(
sIo,
index=False,
sep=',',
header=False,
quoting=csv.QUOTE_MINIMAL,
doublequote=False,
escapechar='\\'
)
sioText = sIo.getvalue()
print(sioText)
实际输出:
1,"\",text
我需要什么:
1,"\\",text
创建约束的工程用例是,这将是一些用于将数据从一个系统移动到另一个系统的核心代码。我不会提前知道数据的格式,也不会对其进行太多控制(任何列都可以包含转义字符),并且我无法控制另一侧的转义字符,因此实际输出将是读为错误。因此,最初的问题是“你如何逃脱转义字符”。
作为参考,pandas 文档中此参数的定义为:
escapecharstr, default None
String of length 1. Character used to escape sep and quotechar when appropriate.
【问题讨论】:
-
你能发一个minimal reproducible example你想要做什么吗?在给定输入的情况下,您希望输出到底是什么样的?
-
很好,@MichaelDelgado。添加了一个您可以放入 jupyter 笔记本的内容,该笔记本应准确显示我得到的内容和想要的内容,以及存在限制的原因。
-
谢谢!我在一段时间内收到的对这条线的最佳回应;)