You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取CSV文件中Unicode emoji编码异常求助:无法正常显示emoji

解决CSV文件中Unicode Emoji编码问题

你的核心问题是CSV中的内容是Python风格的字符串字面量(包含u""、u''或未加引号的转义序列),直接读取后这些只是普通字符串,不会自动解析为Emoji字符。下面是具体的解决方案:

问题分析

你CSV里的条目比如u"\U0001f3c6 Campaign for you"并不是直接的Emoji文本,而是Python代码里的字符串写法。用csv.reader读取时,它会被当作普通字符串处理,所以\U0001f3c6不会转换成对应的🏆 emoji。

解决方案

使用ast.literal_eval()安全解析字符串字面量,或者针对无引号的转义序列用unicode-escape解码,将其转换为真正的Unicode字符串。修改代码如下:

import csv
import ast

def emojis():
    file_ = "./Subjects/Subjects.csv"  # 按需调整路径
    with open(file_, 'r', encoding='utf-8') as csv_:
        data = dict(csv.reader(csv_, delimiter=','))
    
    parsed_data = {}
    for key, value in data.items():
        try:
            # 处理带u""、u''包裹的字符串字面量
            parsed_value = ast.literal_eval(value)
        except (SyntaxError, ValueError):
            # 处理无引号的转义序列(如Subject2、Subject4)
            parsed_value = value.encode('utf-8').decode('unicode-escape')
        parsed_data[key] = parsed_value
    
    # 验证输出
    for key, content in parsed_data.items():
        print(f"{key}: {content}")

emojis()

关键说明

  1. ast.literal_eval(): 安全解析Python合法的字面量,能正确识别u""/u''包裹的字符串,将\U0001f3c6转换为对应Emoji。
  2. unicode-escape解码: 针对没有引号包裹的转义序列,直接将字符串中的Unicode转义码转换为实际字符。
  3. 指定文件编码: 用encoding='utf-8'打开文件,确保文件内容被正确读取为Unicode字符串。

执行上述代码后,所有Emoji都会正常显示。

内容的提问来源于stack exchange,提问作者entity wor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:02:07