【问题标题】:Why does 'u' appear in front of my strings? [duplicate]为什么'u'出现在我的字符串前面? [复制]
【发布时间】:2014-02-08 07:25:02
【问题描述】:

我是爬网的新手。

我已经用 Python 中的 BeautifulSoup 刮掉了这张表,但出现了符号 u',而且它既没有出现,也没有出现它的代码。

代码如下:

import urllib2
from bs4 import BeautifulSoup
first=urllib2.urlopen("http://www.admision.unmsm.edu.pe/res20130914/A/011/0.html").read()
soup=BeautifulSoup(first)
for tr in soup.find_all('tr')[2:]:
    tds = tr.find_all('td')
    print (tds[0].text, tds[1].text, tds[2].text, tds[3].text)

当我运行代码时,结果是这样的:

(u'494560', u'ABAD SAAVEDRA, GERSON HORACIO', u'011', u'1116.8750')
(u'455314', u'ABAD VALVERDE, MARIA ISABEL', u'011', u'1482.7500')
(u'491005', u'ABREGU HUAMAN, MERCEDES LILIANA', u'011', u'503.4000')
(u'457929', u'ACOSTA ABAD, ALEJANDRO FRANCISCO', u'011', u'413.0500')

所以,我的问题是:为什么会出现u'?以及如何避免这种情况?

【问题讨论】:

  • 你可能是你的朋友。这意味着检索到的字符串可以包含来自更多语言的字符,而不仅仅是英语。
  • 感谢您的信息,该表实际上包含西班牙语字符。我的第一语言。

标签: python regex web-scraping


【解决方案1】:

u 的意思是字符串是 unicode:

>>> v1 = u'a'
>>> v2 = u'b'
>>> type(v1)
<type 'unicode'>
>>> type(v2)
<type 'unicode'>
>>>

您可以通过删除print 行上的括号来防止它们被打印:

print tds[0].text, tds[1].text, tds[2].text, tds[3].text

下面是使用其他演示中的变量的演示:

>>> print (v1, v2)
(u'a', u'b')
>>> print v1, v2
a b
>>>

【讨论】:

    猜你喜欢
    • 2012-07-02
    • 2012-10-07
    • 2017-10-20
    • 2011-01-28
    • 2017-10-12
    • 2021-02-26
    • 2015-06-16
    相关资源
    最近更新 更多