【问题标题】:Finding a Non-Ascii Character With Rfind - ü使用 Rfind 查找非 Ascii 字符 - ü
【发布时间】:2019-04-23 12:58:55
【问题描述】:

所以我试图找到在提取的二进制缓冲区中出现的给定字符。这个提取的二进制字符恰好是一个带有变音符号的 u。我将如何找到这个字符,因为当我尝试运行“文件中的非 Ascii 字符”的脚本时,python 会抛出错误,失败文件的相关位置,然后是“但没有声明编码”。

positionoflastu = ssidstring.rfind('ü')
tvname = ssidstring[lastu+1:]

非常感谢

【问题讨论】:

  • 你的 .py 文件是用哪种编码保存的?
  • 我不知道?绝对是变音的 u 导致它失败。
  • 这是作为尸检框架的一部分开发的模块。
  • 如果我在空闲 3.7.3 中尝试此代码,它就可以工作。 Python代码的默认编码是UTF-8,所以不需要声明。
  • 它还在行号之后声明“但没有声明编码”

标签: python string parsing find


【解决方案1】:

听起来 Python 抱怨的是你的 .py 文件,而不是你的数据文件。完整的错误消息可能类似于:

SyntaxError:
Non-ASCII character '\xfc' in file foo.py on line 1,
but no encoding declared;
see http://python.org/dev/peps/pep-0263/ for details

您应该阅读该 PEP。它会告诉你你的 Python 文件需要声明它的编码。你说你不知道文件的编码,所以这对你学习如何找出是件好事。同时,我们可以根据错误消息所抱怨的特定字节做出合理的猜测(这就是为什么当您在 StackOverflow 上提问时包含完整的错误消息通常是个好主意的一个例子)。

例如,如果错误消息抱怨 \xfc,那么您的文件可能编码为 Latin-1/ISO-8859-1/CP 1252。如果它抱怨 \c3,那么您的文件可能编码为UTF-8。

所以你可以通过放置一个来克服这个错误

# coding=cp1252

# coding=utf_8

作为 Python 源文件的第一行或第二行。

【讨论】:

  • 谢谢,这是我最初用来解决它的方法,添加了 utf8 编码块。 :)
猜你喜欢
  • 2011-04-22
  • 2013-11-17
  • 2011-05-21
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 2019-05-13
相关资源
最近更新 更多