首页 > 解决方案 > Python - 使用重音字母

问题描述

我在 Python 中遇到重音字母问题。它不能真正用非重音字母替换重音字母,因为在数据框中搜索它们时它不会识别这些单词。

下面的代码将新列添加到数据框“ df_sb ”,并将字符串(Section Début 或 Section da Tête)与另一列的内容相结合。

问题是,当我在我的主脚本文件中运行下面的块时,它会正确地编写和显示带有重音字母的单词(Section DébutSection da Tête)。但是,这需要通过调用函数在不同的文件中执行。当我调用该函数并返回 df_sb 数据框(带有两列)时,由于某种原因它弄乱了重音字母。我不明白为什么会这样。

块 1

from ipynb.fs.full.Untitled1 import *
df_sb = func_1()

块 2:

def func_1():
    import pandas as pd
    df_sb = ['One' , 'Two', 'Three']
    df_sb = pd.DataFrame(df_sb)
    df_sb.columns = ['NAME']


    for i in range(0,len(df_sb['NAME']),1):
        df_sb['SECTION_DEBUT'] = "Section Début: " + df_sb.loc[:,'NAME'] + " "
        df_sb['SECTION_TETE'] = "Section da Tête: " + df_sb.loc[:,'NAME'] + " "
    return(df_sb)

-> 在同一文件上调用和运行函数时的输出:

在此处输入图像描述

-> 在不同文件上调用和运行函数时输出: 在此处输入图像描述

应该如何处理?

标签: pythonjupyter-notebooknon-ascii-characters

解决方案


这是源代码编码问题

当您获得正确的输出时,您的编辑器和运行代码的 Python 解释器都同意源编码,因此您可以正确表示非 ASCII 字符。

当您第二次运行它时,解释器没有使用与编辑器相同的编码。从生成的特定 mojibake 来看,编辑器使用的是 UTF-8,而解释器使用的是 latin-1。唉,这是错误的选择!

幸运的是,有一种简单的方法可以告诉 Python 解释器您的文件的正确编码是什么。在文件的最顶部,在任何其他代码上方(但可以选择在“shebang”行下方,例如#!/user/bin/python)放置如下内容:

# coding=utf-8

实际上,您可以使用多种变体形式来编写它(某些 IDE 或其他复杂的文本编辑器可能会识别其中的几种,以确保它们也使用指定的编码)。这种编码声明的全部细节在PEP 263中有详细说明。


推荐阅读