【问题标题】:How to handle accented chars in python?如何处理python中的重音字符?
【发布时间】:2020-06-29 01:56:27
【问题描述】:

我知道有很多关于它的资料,但我无法为我的问题找到解决方案。

我将此文本写在我必须操作的 txt 文件中,等等,它包含许多重音字符。由于某种原因,我无法正确管理它们。这是我的代码:

file = open ('parsed.txt', 'w', encoding = 'latin1')
file.write('ààààà')

这很好用。

但我也需要做好这项工作:

with open('input.txt', 'r', encoding = 'latin1') as f:
    string = f.read()
    or_array = string.splitlines()
    new_array = []
    for line in or_array:
        new = (line[13:]).strip()
        print(new)
        new_array.append(new)
    new_string = ''
    for lin in new_array:
        new_string += lin
        new_string += ' '
    f_n = open('parsed.txt', 'w', encoding = 'latin1')
    f_n.write(new_string)

该代码有什么问题?

输入:

00:00:06.49    ciaò
00:00:20.665     Questa è una provà
00:00:44.157     èè   aa ò à ùù ù
00:00:44.157       

输出:

ciaò Questa è una provàèè   aa ò à ùù ù  

谢谢。

【问题讨论】:

    标签: python python-3.x utf-8 iso-8859-1


    【解决方案1】:

    如果 input.txt 的内容实际上在 ISO-8859-1 中,则对我有用。如果它是 UTF-8 格式,那么您会得到不正确的结果。换句话说,当我复制/粘贴您的输入时,我会得到一个内容为 UTF-8 的文件。如果我这样做iconv -f utf-8 -t L1 < utf8.txt > input.txt,那么您的程序可以正常工作。

    顺便说一句,您的程序不是惯用的 Python,而且在大量输入时效率会非常低。

    【讨论】:

    • 谢谢。是的,问题是 input.txt 是用 utf-8 编码的。我知道这个程序在大输入时效率很低,原来的 input.txt 有 130 行长,所以没问题。顺便说一句,我必须寻找“惯用的 python”,因为我不知道是什么。
    • @ZenoDallaValle “惯用语”在这种情况下的意思是“典型的”或“通常的方式”。例如,您通常不会使用f.read()。相反,您会将其视为一次使用一行的迭代器:for line in f:
    猜你喜欢
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 2015-10-25
    • 1970-01-01
    • 2016-01-18
    • 2017-05-19
    相关资源
    最近更新 更多