如何从列表中删除字符串unicode

时间:2015-06-26 03:21:38

标签: python unicode beautifulsoup

我正在尝试删除字符串unicode" u'"我的字符串列表中的标记。该列表是此站点http://www.boxofficemojo.com/yearly/chart/?yr=2013&p=.htm的参与者列表。

我有一个从这个网站获取这些字符串的方法:

def getActors(item_url):
    response = requests.get(item_url)
    soup = BeautifulSoup(response.content, "lxml")  # or   BeautifulSoup(response.content, "html5lib")
    tempActors = []
    try:
        tempActors.append(soup.find(text="Actors:").find_parent("tr").find_all(text=True)[1:])
    except AttributeError:
        tempActors.append("n/a")

    return tempActors

此方法将每个电影的演员放入临时列表中。 我稍后在使用

的网络抓取方法中调用此方法
listOfActors.append(getActors(href))

将所有这些临时列表附加到所有电影演员的大列表中。

稍后,我将此列表写入带有

的csv文件
for item in listOfActors:
    wr.writerow((item))

现在输出就像

[u'Jennifer Lawrence', u'Josh Hutcherson', u'Liam Hemsworth', u'Elizabeth Banks', u'Stanley Tucci', u'Woody Harrelson', u'Philip Seymour Hoffman', u'Jeffrey Wright', u'Jena Malone', u'Amanda Plummer', u'Sam Claflin', u'Donald Sutherland', u'Lenny Kravitz']
[u'Robert Downey, Jr.', u'Gwyneth Paltrow', u'Don Cheadle', u'Guy Pearce', u'Rebecca Hall', u'James Badge Dale', u'Jon Favreau', u'Ben Kingsley', u'Paul Bettany*', u' ', u'(Voice)', u'Mark Ruffalo*', u' ', u'(Cameo)']

我尝试使用str()方法,但我认为它不起作用,要么我没有把它放在正确的位置,要么这不是正确的方法去做吧。  问题在于我没有单独将每个演员都列入名单中,我将每个电影的演员聚集在一起,所以我不知道如何转换整个演员。名单。

1 个答案:

答案 0 :(得分:1)

提供一个重现问题的小例子,更容易纠正错误。缺少这个,这是一个例子,直接来自UnicodeWriter文档的codecs。只需确保您的数据是Unicode字符串列表的列表:

#!python2
#coding:utf8
import csv
import cStringIO
import codecs

data = [[u'Chinese',u'English'],
        [u'马克',u'Mark'],
        [u'你好',u'Hello']]

class UnicodeWriter:
    """
    A CSV writer which will write rows to CSV file "f",
    which is encoded in the given encoding.
    """

    def __init__(self, f, dialect=csv.excel, encoding="utf-8-sig", **kwds):
        # Redirect output to a queue
        self.queue = cStringIO.StringIO()
        self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
        self.stream = f
        self.encoder = codecs.getincrementalencoder(encoding)()

    def writerow(self, row):
        self.writer.writerow([s.encode("utf-8") for s in row])
        # Fetch UTF-8 output from the queue ...
        data = self.queue.getvalue()
        data = data.decode("utf-8")
        # ... and reencode it into the target encoding
        data = self.encoder.encode(data)
        # write to the target stream
        self.stream.write(data)
        # empty queue
        self.queue.truncate(0)

    def writerows(self, rows):
        for row in rows:
            self.writerow(row)

with open('out.csv','wb') as f:
    w = UnicodeWriter(f)
    w.writerows(data)