gpt4 book ai didi

Python 字符串处理,Unicode & Beautiful Soup

转载 作者:行者123 更新时间:2023-11-28 22:05:34 29 4
gpt4 key购买 nike

我一直在寻找解决我遇到的错误的方法,但还没有找到/理解一个可行的方法。本质上,如果我使用字符串函数(翻译、剥离等),我会收到 Unicode 错误(ascii' codec can't encode character 'x' in position y: ordinal not in range(128) 。但是当我尝试 Beautiful Soup处理文本时,我没有遇到 Unicode 错误,但难度(我应该说不熟悉)对我来说相当高。以下是我的代码摘录:

...

import urllib2,sys
import re
import os
import urllib
import string
import time
from BeautifulSoup import BeautifulSoup,NavigableString, SoupStrainer
from string import maketrans
import codecs

trantab=string.maketrans(",",";")
...

html5 = urllib2.urlopen(address5).read()
time.sleep(1.5)

soup5 = BeautifulSoup(html5)

for company in iter(soup5.findAll(height="20px")):
stream = ""
count_detail = 1
for tag in iter(company.findAll('td')):
if count_detail > 1:
stream = stream + string.translate(str(tag.text),trantab)
if count_detail < 4 :
stream=stream+","
count_detail = count_detail + 1
print str(storenum)+","+branch_name_address+","+ stream

....

这个脚本运行了一段时间然后在stream = stream + string.translate(str(tag.text),trantab)

炸弹

基本上,我只是想在我正在处理的字段中用分号替换逗号。

此外,我尝试使用 string.strip 删除嵌入的空格/空格,但我遇到了类似的错误。

我如何使用 Beautiful soup 做同样的事情(就用分号替换逗号和删除空格而言)?

或者如果我坚持使用字符串函数,是否有代码可以解决那些讨厌的 Unicode 错误?

最佳答案

您将 str 对象与 unicode 对象混合在一起,这导致 Python 解释器将一个对象强制转换为另一个对象。字符串/Unicode 强制转换需要编码,默认情况下假定为 ascii。如果这个假设不成立,就会出现这种错误。

一般的解决方案是不要将 strunicode 混合使用:尽可能使用 unicode 并使用 string.encode('utf8', ' strict')unicode_string.decode('utf8', 'strict')(以 UTF-8 为例)。

在这种情况下,替换

stream = stream + string.translate(str(tag.text),trantab)

stream = stream + tag.text.replace(u',', u';')

关于Python 字符串处理,Unicode & Beautiful Soup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5088511/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com