【问题标题】:Python, replace long dash with short dash?Python,用短破折号代替长破折号?
【发布时间】:2013-10-09 14:00:51
【问题描述】:

我想用短破折号 (-) 替换长破折号 ()。我的代码:

if " – " in string:
      string = string.replace(" – ", " - ")

导致以下错误:

SyntaxError:文件 ./script.py 中第 76 行的非 ASCII 字符“\xe2”,但未声明编码;详情见http://www.python.org/peps/pep-0263.html

我该如何解决这个问题?

【问题讨论】:

  • 你读过 PEP 263 吗?​​

标签: python replace python-2.x


【解决方案1】:

长破折号不是ASCII character。声明你的脚本的编码,像这样(在顶部的某个地方)

#-*- coding: utf-8 -*-

除了utf-8,还有其他编码,但如果不使用几乎涵盖所有(unicode)字符的ASCII字符,使用utf-8总是安全的。

请参阅PEP 0263 了解更多信息。

【讨论】:

  • @Wooble:什么不是? \xe2?将长破折号编码为 UTF-8 会产生\xe2 的第一个字节(然后是\x80\x94)。
  • Err... 是的,这会教我复制粘贴错误的字符。 +1
【解决方案2】:

我想链接另一个答案:https://stackoverflow.com/a/42856932/3751268。然而,这只适用于 Python 2。

这里是python 3的解决方案:

my_str = '—asasas—'
my_str.replace(b'\xe2\x80\x94'.decode('utf-8'), '--')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2011-08-28
    • 2016-04-05
    • 2011-03-08
    • 1970-01-01
    • 2020-07-06
    相关资源
    最近更新 更多