Python 从列表中删除字符串unicode标记,并使每个项位于单独的行中

Python 从列表中删除字符串unicode标记,并使每个项位于单独的行中,python,csv,unicode,beautifulsoup,web-crawler,Python,Csv,Unicode,Beautifulsoup,Web Crawler,我有一个列表,listOfActors,它包含了从这个网站上找到的每部电影中演员的子列表 我用一个webcrawling函数获取演员 def getActors(item_url): response = requests.get(item_url) soup = BeautifulSoup(response.content, "lxml") # or BeautifulSoup(response.content, "html5lib") tempActors = []

我有一个列表,listOfActors,它包含了从这个网站上找到的每部电影中演员的子列表

我用一个webcrawling函数获取演员

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
结果是以这种格式列出参与者

[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)']
我将这些数据导出到一个csv文件中,每个列表都位于一个单独的行上。我有两个问题:

首先,如何从每个子列表中删除“u”标记,最好也删除括号

其次,当我打开csv文件时,我希望每个参与者都在excel中自己的块中。现在他们都在一个巨大的街区里

我希望最终输出如下所示:

詹妮弗·劳伦斯|乔什·哈奇森|利亚姆·亨斯沃思|。。。诸如此类 四

小罗伯特·唐尼|格温妮丝·帕特洛|唐·谢德尔|

而不是

[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)']
这是我的主要webcrawling函数,我在其中调用getActors函数:

def spider(max_pages):
    page = 1
    while page <= max_pages:
        url = 'http://www.boxofficemojo.com/yearly/chart/?page=' + str(page) + '&view=releasedate&view2=domestic&yr=2013&p=.htm'
        source_code = requests.get(url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text)
        for link in soup.select('td > b > font > a[href^=/movies/?]'):
             href = 'http://www.boxofficemojo.com' + link.get('href')
            listOfActors.append(getActors(href))
        page += 1
def spider(最大页数):
页码=1

首先,您应该将当前的getActors实现更改为此。您当前的实现返回一个列表列表。这将返回单个列表

def getActors(item_url):
    response = requests.get(item_url)
    soup = BeautifulSoup(response.content, "lxml")  # or BeautifulSoup(response.content, "html5lib")
    tempActors = []
    try:
        return(soup.find(text="Actors:").find_parent("tr").find_all(text=True)[1:])
    except AttributeError:
        return ['n/a']
然后,在从
getActors
收集大量列表后,将它们写入一个名为
listOfActors
的列表列表中,您可以将它们全部写入如下csv文件

out = open('csv.csv','w')
for i in listOfActors:
    line = ''
    for j in i:
        line = line+j+','
    out.write(line+'\n')

out.close()

请使用逗号分隔这些值。此外,python将自动处理unicode字符串。

请显示您拥有的完整代码,包括导出到csv的部分。我看到您的刮板开始工作了;)
s=map(lambda x:x.encode('ascii'),s)
将其转换为ascii(删除u)我收到一个错误-TypeError:无法连接'str'和'list'对象请否决此项的人留下评论?@alphamonkey lxml是最好的:D