我正在使用如下所示的程序来编写(从网络上抓取)一个人员数据列表。 我认为代码本身没问题,但我对结果感到困惑。有些字符被正确解码,有些则没有。例如:
pos = np.where(signal > -1e-8, signal, np.nan)
neg = np.where(signal < 1e-8, signal, np.nan)
两个字符串中的最后一个单词是相同的! 还呢?用于替换不可翻译的字符的符号一次不使用:
STANIS?AWurodzony/a 01.01.1888, ?Ԅ?
HALINAurodzony/a 05.07.1927, ŁÓDŹ
以下是代码:
STANISŁAWurodzony/a 24.03.1907, RAKSZANY
^
| here is written ok - not replaced
问题: 如何解决这个问题。我的手术错了吗?或者源页面已破坏编码? (我想它没关系,我可以在浏览器中阅读它而没有任何错误。)
答案 0 :(得分:1)
这看起来像一种波兰语,并且看起来不像使用UTF-8
这样的多字节编码。您正在使用Names.txt
写入ISO-8859-1
文件,但该文件并不支持所有修饰字符。
您可以使用ISO-8859-2
来支持波兰特色,但更好的方法是使用支持所有语言的UTF-8
,并且是网络上的通用标准。
尝试
file = codecs.open('Names.txt','a','UTF-8','replace')
使用请求发出请求时,请尝试检查每个页面的编码。例如:
res = requests.get('http://real.address.gov.pl'+line)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text)
答案 1 :(得分:1)
我对python不是很熟悉,但是java程序遇到了类似的问题。几乎在所有情况下,问题都是在所有步骤中都没有使用相同的编码,因此在转换它时会产生丑陋的特征。
如果可能的话,我建议在整个过程中使用UTF-8。
一个偏离主题的一面评论:因为我经常这样做,我自己买了this T-Shirt(正确拼写Scheiß,德语为 crap )在工作中穿着它; - )