2013-10-03 20 views
5

Tôi muốn thay thế một dấu gạch ngang dài () bằng một dấu gạch ngang ngắn (-). Mã của tôi:Python, thay thế dấu gạch ngang dài bằng dấu gạch ngang ngắn?

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

kết quả trong các lỗi sau:

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

Làm thế nào tôi có thể sửa lỗi này?

+5

Bạn đã đọc PEP 263 chưa? – geoffspear

Trả lời

11

Dấu gạch ngang dài không phải là ASCII character. Khai báo mã hóa của kịch bản của bạn, giống như này (ở đâu đó trên đầu):

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

Ngoài ra còn có mã hóa khác bên cạnh utf-8 nhưng nó luôn luôn là an toàn để sử dụng utf-8 nếu không làm việc với các ký tự ASCII trong đó bao gồm hầu như tất cả (unicode) nhân vật.

Xem PEP 0263 để biết thêm thông tin.

+3

@Wooble: Điều gì không? '\ xe2'? Mã hóa một dấu gạch ngang dài để UTF-8 mang lại một byte đầu tiên của '\ xe2' (sau đó theo sau là' \ x80 \ x94'). – icktoofay

+1

Err ... Vâng, điều đó sẽ dạy tôi sao chép dán ký tự sai. +1 – geoffspear

Các vấn đề liên quan