【问题标题】:change unicode to accent in string将 unicode 更改为字符串中的重音
【发布时间】:2018-01-24 09:49:45
【问题描述】:

我有一个 csv 文件,其中有一列在字符串中包含 unicode,而另一列使用 UTF-8 正确读取
这里是第一行:

Col1 | Col2
热疗改造 | [“consommation \u00e9nerg\u00e9tique de b\u00e2timents publics”]

如何修复第二列,以便将 unicode 转换为重音?

编辑:我正在阅读 csv:

pd.read_csv('data.csv', delimiter=',', header=0 )

添加“encoding='utf-8'”变化不大

我正在保存 csv

df.to_csv('data.csv', encoding='utf-8', index=False)

并使用任一打印它

print(df[0:2]) or directly df

【问题讨论】:

  • CSV文件的编码是什么?你用什么代码来阅读它?如何打印结果以便看到`\u00e9nerg\u00e9tique`?
  • @LutzHorn 查看我的编辑,csv 编码为 UTF-8
  • 我可以通过任何文本阅读器打开 csv 文件直接看到`\u00e9nerg\u00e9tique`
  • 您是说您的 CSV 文件实际上包含字符“\u00e9nerg\u00e9tique”?这可以从源头上修复吗?
  • 那么也许您应该请生成此 CSV 的人修复输出。

标签: python python-3.x unicode encoding utf-8


【解决方案1】:

Col2 看起来像一个 JSON 格式的列表。不确定这是否是您需要的,但以下内容会将显示的 input.csv 重写为 output.csv。该代码假定 input.csv 采用 UTF-8 编码。

input.csv

Col1|Col2
rénovation thermique|["consommation \u00e9nerg\u00e9tique de b\u00e2timents publics"]

rewrite.py

import csv
import json

with open('input.csv','r',newline='',encoding='utf8') as inf, \
     open('output.csv','w',newline='',encoding='utf8') as outf:

    r = csv.reader(inf,delimiter='|')
    w = csv.writer(outf,delimiter='|')

    header = next(r)
    w.writerow(header)

    for col1,col2 in r:
        newcol = json.loads(col2)    # Converts JSON to a list
        w.writerow([col1,newcol[0]]) # Replaces col2 with the list element.

输出.csv

Col1|Col2
rénovation thermique|consommation énergétique de bâtiments publics

【讨论】:

    【解决方案2】:

    \u00e9 é (LATIN SMALL LETTER E WITH ACUTE)。文件被 Python 正确读取和处理。

    当您在控制台上使用print 时,该字符在控制台上由\u00e9 表示。如果您的控制台能够打印é,您会看到您所期望的。

    在我的系统上,这段代码

    s = "é"
    print(s)
    print(type(s))
    print(len(s))
    
    t = "\u00e9"
    print(t)
    print(type(t))
    print(len(t))
    

    打印

    é
    <class 'str'>
    1
    é
    <class 'str'>
    1
    

    这正是我所期望的。

    【讨论】:

    • 我从代码中得到相同的输出(我使用的是法式窗口,所以读重音应该不是问题)但它仍然在我的数据框中打印 unicode char
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2016-05-23
    • 2013-01-07
    • 1970-01-01
    相关资源
    最近更新 更多