【问题标题】:extra characters on python list [duplicate]python列表上的额外字符[重复]
【发布时间】:2023-03-27 03:33:02
【问题描述】:

我遇到了以下问题:

slots = rows[i].find_elements_by_tag_name('td')
prodFolder = slots[0].text
prodType = slots[2].text
prodId = slots[1].text
values = [prodFolder, prodId, prodType]
print values

当我打印值时,列表中每个项目的前面都有一个额外的字符:
[u'active_e', u'1193', u'Active E']
这可能是 .text 提供了一些我不想要的额外数据的结果。有没有优雅的方法来解决这个问题? (不使用蛮力删除多余的你?)

【问题讨论】:

  • 不是多余的字符。这是unicode 字符的表示。
  • 没什么好担心的。
  • values = [str(i.text) for i in slots]。和print values.Change your like this.
  • @RahulKP 如果其中有任何非ASCII字符,这将引发UnicodeEncodeError。请改用i.text.encode('utf-8')

标签: python selenium-webdriver


【解决方案1】:

u'active_e' 中的'u' 仅表示这是一个unicode 对象,而不是一个字节串。您可以使用encode 进行转换:

> u = u'active_e'
> s = u.encode('utf-8')

> u
u'active_e'
> s
'active_e'

# But:
> print(u)
active_e
> print(s)
active_e

> type(u)
<type 'unicode'>
> type(s)
<type 'str'>

但在大多数情况下,unicode 对象与字节串一样好。对于纯 ASCII 字符串,即使 u == s 也将是 True

> u == s
True

# careful with non-ascii chars:
> u = u'äöüß'
> s = u.encode('utf-8')
> u == s
False

> len(u)
4
> len(s)
8  # ä,ö,ü,ß have two-byte representations

【讨论】:

    猜你喜欢
    • 2019-03-14
    • 2015-01-02
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2015-09-04
    • 2014-11-06
    相关资源
    最近更新 更多