Python:将一个unicode变量转化为一个字符串变量

Python: Transform a unicode variable into a string variable

我使用网络爬虫获取了一些数据。我将数据存储在变量 price 中。 price 的类型是:

<class 'bs4.element.NavigableString'>

price的每个元素的类型是:

<type 'unicode'>

基本上 price 包含一些白色 space 和换行符,后跟:0。我想消除所有多余的符号并只恢复数字520。我已经做了一个天真的解决方案:

def reducePrice(price):
    key=0
    string=""
        for i in price:
            if (key==1):
                string=string+i
            if (i== '$'):
                key=1
    key=0
    return string

但我想实现一个更优雅的解决方案,将price的类型转换为str,然后使用str方法对其进行操作。我已经在网络和论坛中的其他帖子中搜索了很多。我能得到的最好的是使用:

p = "".join(price)

我可以生成一个大的 unicode 变量。如果你能给我一个提示,我将不胜感激(我在 Ubuntu 中使用 python 2.7)。

编辑 我添加我的蜘蛛以备不时之需:

def spider(max_pages):
        page = 1
        while page <= max_pages:
            url = "http://www.lider.cl/walmart/catalog/product/productDetails.jsp?cId=CF_Nivel2_000021&productId=PROD_5913&skuId=5913&pId=CF_Nivel1_000004&navAction=jump&navCount=12"
            source_code = requests.get(url)
            plain_text = source_code.text
            soup = BeautifulSoup(plain_text)
            title = ""
            price = ""
            for link in soup.findAll('span', {'itemprop': 'name'}):
                title = link.string
            for link in soup.find('em', {'class': 'oferLowPrice fixPriceOferUp  '}):
                price = link.string

            print(title + '='+ str(reducePrice(price)))
            page += 1

spider(1)

编辑 2 感谢 Martin 和 mASOUD,我可以使用 str 方法生成解决方案:

def reducePrice(price):
   return int((("".join(("".join(price)).split())).replace("$","")).encode())

这个方法return一个int。这不是我最初的问题,但这是我项目的下一步。我添加它是因为我们不能将 unicode 转换为 int 但我们可以先使用 encode() 生成 str

使用 RegEx 从您的 Unicode 字符串中提取价格:

import re

def reducePrice(price):
    match = re.search(r'\d+', u'  0  ')
    price = match.group()  # returns u"500"
    price = str(price) # convert "500" in unicode to single-byte characters.
    return price

即使这个函数按照您的要求将 Unicode 转换为 "regular" 字符串,您有什么理由想要这个吗? Unicode 字符串可以像普通字符串一样使用。即 u"500""500"

几乎相同