如何将Unicode字符串(包含££等额外字符)转换为Python字符串?
我在Python中有一个Unicode字符串,我想删除所有的重音符号(变音符号).
我在Web上发现了一种在Java中执行此操作的优雅方法:
我是否需要安装pyICU等库?或者只使用python标准库?那python 3怎么样?
重要说明:我想避免代码使用重音字符到非重音符号的显式映射.
我的代码只是抓取一个网页,然后将其转换为Unicode.
html = urllib.urlopen(link).read()
html.encode("utf8","ignore")
self.response.out.write(html)
Run Code Online (Sandbox Code Playgroud)
但我得到一个UnicodeDecodeError
:
Traceback (most recent call last):
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py", line 507, in __call__
handler.get(*groups)
File "/Users/greg/clounce/main.py", line 55, in get
html.encode("utf8","ignore")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 2818: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我认为这意味着HTML包含一些在某处错误形成的Unicode尝试.我可以删除导致问题的任何代码字节而不是出错吗?
不知道这是否是微不足道的,但我需要将一个unicode字符串转换为ascii字符串,我不想让所有那些逃避字符.我的意思是,是否有可能对一些非常相似的ascii字符进行"近似"转换?
例如:Gavin O'Connor被转换为Gavin O\x92Connor,但我真的希望它被转换为Gavin O'Connor.这可能吗?有没有人写一些工具来做,或者我是否必须手动更换所有的字符?
非常感谢你!马尔科
我正在寻找简单的Python函数,它接受一个字符串并返回一个类似的字符串,但所有非ascii字符转换为它们最接近的ascii等价物.例如,应该删除变音符号等.我想象必须有一个非常规范的方法来做这个并且有很多相关的stackoverflow问题,但我找不到一个简单的答案所以它似乎值得一个单独的问题.
输入/输出示例:
"Étienne" -> "Etienne"
Run Code Online (Sandbox Code Playgroud) 我有一些PowerPoint文档,使用git进行版本控制。我想知道文件版本之间的区别。文字是最重要的,图像和格式并没有那么重要(至少目前还不是)。
我在Google AppEngine(Python SDK)中有这个代码:
from string import maketrans
intab = u"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ".encode('latin1')
outtab = u"aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn".encode('latin1')
logging.info(len(intab))
logging.info(len(outtab))
trantab = maketrans(intab, outtab)
Run Code Online (Sandbox Code Playgroud)
当我在交互式控制台中运行代码时我没有问题,但是当我在GAE中尝试它时,我收到以下错误:
引发ValueError,"maketrans参数必须具有相同的长度"ValueError:maketrans参数必须具有相同的长度INFO 2009-12-03 20:04:02,904 dev_appserver.py:3038]"POST/backendsavenew HTTP/1.1"500 - INFO 2009-12 -03 20:08:37,649 admin.py:112] 106 INFO 2009-12-03 20:08:37,651 admin.py:113] 53 ERROR 2009-12-03 20:08:37,653 init .py:388] maketrans参数必须具有相同的长度
我无法弄清楚为什么它的尺寸增加了一倍.带代码的python文件保存为UTF-8.
在此先感谢您的帮助.
我从数据库中获取以下字符串:
'23:45 \xe2\x80\x93 23:59'
Run Code Online (Sandbox Code Playgroud)
输出应该是这样的
'23:45 - 23:59'
Run Code Online (Sandbox Code Playgroud)
我怎么解码这个?我试过utf-8解码但没有运气
>>> x.decode("utf-8")
u'23:45 \u2013 23:59'
Run Code Online (Sandbox Code Playgroud)
谢谢
python ×7
unicode ×4
ascii ×3
string ×2
decoding ×1
diacritics ×1
diff ×1
git ×1
git-diff ×1
powerpoint ×1
python-2.x ×1
python-3.x ×1
regex ×1
translation ×1
utf-8 ×1