|
请大牛帮忙!我有一些文本,里面有些字的编码很奇怪,导致我无法正确分词,所以我想能不能都统一编码。我摘取了其中一句,如下:
import chardet
l="2020年2⽉10⽇,医⽣步⾏回家近30分钟。"
for c in l:
print(c,chardet.detect(c.encode('utf-8')))
结果是
2 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
0 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
2 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
0 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
年 {'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''}
2 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
⽉ {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''}
1 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
0 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
⽇ {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''}
, {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''}
医 {'encoding': 'utf-8', 'confidence': 0.505, 'language': ''}
⽣ {'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''}
步 {'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''}
⾏ {'encoding': 'utf-8', 'confidence': 0.505, 'language': ''}
回 {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''}
家 {'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''}
近 {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''}
3 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
0 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
分 {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''}
钟 {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''}
。 {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''}
首先想请问,为什么我拿utf8对这句话编码,这些字的encoding还有其他类型?ISO-8859-1?Windows-1252?
于是我从网上找的办法,尝试把ISO-8859-1编码换成utf8,如下
import chardet
l="2020年2⽉10⽇,医⽣步⾏回家近30分钟。"
for c in l:
print(c,chardet.detect(c.encode('utf-8')))
if chardet.detect(c.encode('utf-8'))['encoding'] == 'ISO-8859-1':
c=c.encode("iso-8859-1").decode('gbk').encode('utf8')
print(c,chardet.detect(c)['encoding'])
结果报错:
2 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
0 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
2 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
0 {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
年 {'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''}
Traceback (most recent call last):
File "f:/Onedrive/论文项目/大健康/新冠-香港/test.py", line 6, in <module>
c=c.encode("iso-8859-1").decode('gbk').encode('utf8')
UnicodeEncodeError: 'latin-1' codec can't encode character '\u5e74' in position 0: ordinal not in range(256)
我该怎么处理呢?
|
|