Heim > Fragen und Antworten > Hauptteil
如题 现在有一个<class 'bs4.element.NavigableString'>type的数据
打印出来是这个样的
[u'3788.00', u'4788.00', u'6388.00', u'2398.00', u'5687.00', u'4088.00', u'4187.00', u'4087.00', u'2587.00', u'5188.00', u'4887.00', u'4287.00', u'4887.00', u'5787.00', u'4887.00', u'4888.00', u'\u8d27\u5230\u4ed8\u6b3e', u'6388.00', u'4987.00', u'5588.00', u'5588.00', u'5588.00', u'3288.00', u'3888.00', u'4788.00', u'4788.00', u'4788.00', u'4788.00', u'5588.00', u'4088.00', u'4788.00', u'4788.00', u'5588.00', u'5588.00', u'6388.00', u'6388.00', u'4788.00', u'5588.00', u'4988.00', u'4788.00', u'6388.00', u'6388.00', u'6388.00', u'5588.00', u'5588.00', u'5588.00', u'6388.00', u'5588.00', u'5588.00', u'4788.00', u'6388.00', u'6388.00', u'6388.00', u'5588.00', u'5588.00', u'6588.00', u'6588.00', u'5588.00', u'5588.00', u'5788.00']
当我用int()类型转换时 提示我:
ValueError: invalid literal for int() with base 10: '3788.00'
然后就在网上看到有网友说用 round(float(Price))的方法可行 #Price就是那个'class 'bs4.element.NavigableString'类型的数据
但是提示的是:
UnicodeEncodeError: 'decimal' codec can't encode characters in position 0-3: invalid decimal Unicode string
这种情况下如何解决呢? BTW我是想用list.append方法把上面这个列表添加到其他列表的时候出现的报错(可是明明昨晚还能运行的T-T)
高洛峰2017-04-17 17:31:30
用float
是可以的,只是有一个u'\u8d27\u5230\u4ed8\u6b3e'(货到付款)
没办法转换成浮点数,把这个元素删掉或者处理的时候忽略就好了。
大家讲道理2017-04-17 17:31:30
首先,你处理的数据类型是<class 'bs4.element.NavigableString'>type
这是一个用BeautifulSoup读到的html内的NavigableString类型的数据。
其实你在用BS4读取的时候就要使用编码方式调整html内数据为utf-8
例子:
soup = BeautifulSoup(html.read().decode("utf-8"), "html.parser")
那这样 你上面的以unicode标记显示的NavigableString类型数据就会显示正常了。