【问题标题】:Python - Using accented lettersPython - 使用重音字母
【发布时间】:2021-04-13 15:38:54
【问题描述】:

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

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

问题是,当我在我的主脚本文件中运行下面的块时,它会正确写入并显示带有重音字母的单词(Section Début 和 Section 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)

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

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

应该如何处理?

【问题讨论】:

  • 检查编辑器对字符的编码
  • 你好@snakecharmerb,我刚刚编辑了我的评论。这有帮助吗?

标签: python jupyter-notebook non-ascii-characters


【解决方案1】:

这是源代码编码问题

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

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

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

# coding=utf-8

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

【讨论】:

  • 嗨@Blckknght。我已经尝试过您的建议,但不幸的是它一直错误地显示字符。我已将该行添加为评论的第一行,但这似乎有所作为。
猜你喜欢
  • 2019-12-11
  • 2018-12-20
  • 2012-09-23
  • 1970-01-01
  • 2016-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多