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

读取包含Python转义字符的csv文件,python,csv,unicode,Python,Csv,Unicode,大家好,非常感谢 我正在编写一个处理utf-8字符串并替换特定字符的Python脚本。因此,我使用msgText.replace(thePair[0],thePair[1])在定义unicode字符及其所需替换的列表中循环,如下所示 theList = [ ('\U0001F601', '1f601.png'), ('\U0001F602', '1f602.png'), ... ] \U0001F601;1f601.png \U0001F602;1f602.png ... 到

大家好,非常感谢

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

theList = [
    ('\U0001F601', '1f601.png'),
    ('\U0001F602', '1f602.png'), ...
]
\U0001F601;1f601.png
\U0001F602;1f602.png
...
到现在为止一切都很好。但是现在考虑一个<强> CSV文件< /强>,它包含要替换的字符,如下所示。< /P>
theList = [
    ('\U0001F601', '1f601.png'),
    ('\U0001F602', '1f602.png'), ...
]
\U0001F601;1f601.png
\U0001F602;1f602.png
...
由于转义字符,我在将csv数据读入列表时不幸失败。我使用
csv
模块读取数据,如下所示:

with open('Data.csv', newline='', encoding='utf-8-sig') as theCSV:
    theList=[tuple(line) for line in csv.reader(theCSV, delimiter=';')]
这会导致像
('\\U0001F601',1f601.png')
这样的成对字符,它们避开转义字符(请注意双反斜杠)。我尝试了几种修改字符串的方法或其他读取csv数据的方法,但我无法解决我的问题。
如何实现将csv数据成对读取并包含转义字符的目标?

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

\U0001F601;1f601.png
\U0001F602;1f602.png
简短版本(使用):

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


请参阅:根据您提供的信息,我不确定您为什么希望通过csv绕道而行,而不仅仅是找到一个通用函数来将任何\U000XXXXX字符转换为xxxxx.png?@trs遗憾的是,模式并不总是相同的。(csv数据包含数百行。)@user2896976我不知道如何对元组列表使用
.encode().decode('unicode-escape')
。如果您的数据始终是一对,则可以执行以下操作:
theList=[(line[0].encode().decode('unicode-escape'),line[1])用于csv中的行。reader(theCSV,delimiter=';')If line]
将对第一个元素进行编码。我还在其中添加了一个
if
,以跳过空行