问题
I want to replace a long dash (–
) with a short dash (-
). My code:
if " – " in string:
string = string.replace(" – ", " - ")
results in the following error:
SyntaxError: Non-ASCII character '\xe2' in file ./script.py on line 76, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
How can I fix this?
回答1:
Long dash is not an ASCII character. Declare encoding of your script, like this (somewhere on top):
#-*- coding: utf-8 -*-
There are also other encodings beside utf-8
but it is always safe to use utf-8
if not working with ASCII characters which covers virtually all (unicode) characters.
See PEP 0263 for more info.
回答2:
I would like to link another answer: https://stackoverflow.com/a/42856932/3751268. However that only worked for Python 2.
Here is a solution for python 3:
my_str = '—asasas—'
my_str.replace(b'\xe2\x80\x94'.decode('utf-8'), '--')
来源:https://stackoverflow.com/questions/19149577/python-replace-long-dash-with-short-dash