当前位置: 首页 > 知识库问答 >
问题:

读取包含Python中转义字符的csv文件

慕乐语
2023-03-14

大家好,提前致谢!

我正在处理一个处理utf-8字符串并替换特定字符的Python脚本。因此,我使用msgText.replace(thePair[0], thePair[1]),同时通过一个定义unicode字符及其所需替换的列表进行循环,如下所示。

theList = [
    ('\U0001F601', '1f601.png'),
    ('\U0001F602', '1f602.png'), ...
]

到目前为止,一切都很好。但现在考虑一个包含要替换的字符的csv文件,如下所示。

\U0001F601;1f601.png
\U0001F602;1f602.png
...

由于转义字符的原因,我很不幸地未能将csv数据读入列表。我使用< code>csv模块读取数据,如下所示:

with open('Data.csv', newline='', encoding='utf-8-sig') as theCSV:
    theList=[tuple(line) for line in csv.reader(theCSV, delimiter=';')]

这将导致像< code>('\\U0001F601 ',' 1f601.png')这样的成对字符,它们会避开转义字符(注意双反斜杠)。我尝试了几种修改字符串的方法或读取csv数据的其他方法,但我无法解决我的问题。我该如何实现将csv数据读取成包含转义字符的成对数据的目标?

共有1个答案

洪涵亮
2023-03-14

为了完整起见,我添加了读取包含转义字符的csv数据的解决方案。考虑定义替换模式的文件< code>Data.csv:

\U0001F601;1f601.png
\U0001F602;1f602.png

简短版(使用列表推导):

import csv

# define replacement list (short version)
with open('Data.csv', newline='', encoding='utf-8-sig') as csvFile:
    replList=[(line[0].encode().decode('unicode-escape'), line[1]) \
        for line in csv.reader(csvFile, delimiter=';') if line]
csvFile.close()

加长版(可能更容易理解):

import csv

# define replacement list (step by step)
replList=[]
with open('Data.csv', newline='', encoding='utf-8-sig') as csvFile:
    for line in csv.reader(csvFile, delimiter=';'):
        if line:  # skip blank lines
            replList.append((line[0].encode().decode('unicode-escape'), line[1]))
csvFile.close()
 类似资料:
  • 我有一个文件。 使用Pandas,从这个文件中获得两个DataFrame和的最佳策略是什么? 输入如下所示: 到目前为止,我想到的最好的方法是转换这个文件转换为Excel工作簿(),将表格拆分为工作表并使用: 然而: 这种方法需要模块。 这些日志文件必须被实时分析,这样就可以更好地找到一种方法来分析它们,因为它们来自日志。 真正的日志比那两个有更多的表。

  • 问题内容: 我正在尝试使用csv文件读取文件,但某些字段是包含逗号的字符串。字符串用引号引起来,但是numpy不能将引号识别为定义了单个字符串。例如,使用“ t.csv”中的数据: 编码 产生错误: ValueError:检测到一些错误!第2行(获得4列而不是3列) 我正在寻找的数据结构是: 查看文档,我看不到任何解决方案。有没有办法用numpy做到这一点,或者我只需要使用模块读入数据,然后将其转

  • 问题内容: 我正在构建一个模拟器,以将JSON数据发布到正在运行的服务中。 JSON应该如下所示: 我在Chrome中使用“高级REST客户端”进行了尝试,效果很好。ServiceStack Web服务会正确解析日期获取。 因此,关键是编写一个传感器模拟器,将这样的数据发布到Web服务。 我用Java创建了它,因此可以在树莓派上运行它。 这是代码: 该程序的输出如下: 这里的问题是JSONObje

  • 问题内容: 这是与许多人相似的问题,但并不完全相同。我有一个文本文件,其中包含约40万行文本。每行本质上都是一个列表。例如看起来 我可以使用以下代码读取文本文件的每一行: 问题是每行都被读取为字符串。我想获取列表中的每个项目。所以我想我会做(针对每一行): 这几乎可行,但是我遇到了问题。在我的文本文件中,很多时候我在列表中都有一个字符串,其中有一个逗号(从上面我有’d and,e string’)

  • 在XSLT 1.0中,处理此xml元素的最佳方法是什么 请注意,“小于号”表示两次。i、 e.as<代码>' 退出<代码> 如果我将禁用输出转义设置为“是”,则