嗨,非常感谢提前!
我正在处理一个处理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数据读入列表。我使用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数据读入包含转义字符的对的目标?
答案 0 :(得分:0)
为了完整起见,我添加了用于读取包含转义字符的csv数据的解决方案。考虑定义替换模式的文件Data.csv
:
\U0001F601;1f601.png
\U0001F602;1f602.png
简短版本(使用list comprehensions):
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()