Py学习  »  Python

如何将列表放入csv文件python中的一个单元格(在我的例子中是一本书的作者列表),所有作者都在一个单元格中

ansarali • 3 年前 • 1490 次点击  

我正试图从图书网站上获取一本书的作者姓名。我把名字放在一列多行中。我希望所有名字都在csv的一个单元格中。以下是我的全部代码

from selenium import webdriver    
import pandas as pd    
driver = webdriver.Chrome()    
site = 'https://www.goodreads.com/book/show/50148349-manto-and-chughtai?from_search=true&from_srp=true&qid=ZARMElvyyt&rank=3'

driver.get(site)    
authors = [ ]    
names = driver.find_elements_by_xpath('//div[@class="authorName__container"]')

for name in names:
    authors.append(name.find_element_by_xpath('.//a[@class="authorName"]').text)

df = pd.DataFrame({'Author Names': authors})    
df.to_csv("Authors_list.csv", index=False)
print(df)

这是我的输出,我得到了,我希望这四个名字都在一个单元格中

enter image description here

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133827
 
1490 次点击  
文章 [ 3 ]  |  最新文章 3 年前
DPGraham4401
Reply   •   1 楼
DPGraham4401    3 年前

Pandas dataframe.to_csv() 方法将根据每个列表元素的外观使用换行符来编写该元素。您无意中完成了堆栈溢出问题 trying to do here .

尝试将作者设置为字符串,并将每个新作者添加到该字符串而不是列表。只要作者的姓名中没有逗号,在office中打开后,所有值都将显示在同一单元格中。

José Miguel
Reply   •   2 楼
José Miguel    3 年前

我没有安装和安装Selenium来测试它。
你能试试这个小办法吗?

from selenium import webdriver

import pandas as pd

driver = webdriver.Chrome()

site = 'https://www.goodreads.com/book/show/50148349-manto-and-chughtai?from_search=true&from_srp=true&qid=ZARMElvyyt&rank=3'

driver.get(site)

authors = [ ]

names = driver.find_elements_by_xpath('//div[@class="authorName__container"]')

for name in names:

    authors.append(name.find_element_by_xpath('.//a[@class="authorName"]').text)

authors_in_one_cell = ', '.join(authors)

df = pd.DataFrame({'Author Names': authors_in_one_cell})

df.to_csv("Authors_list.csv", index=False)

print(df)
Manjunath K Mayya
Reply   •   3 楼
Manjunath K Mayya    3 年前

你可以试试这个。

authors = ','.join(df['authors'].to_list())
with open('mycsv.csv', 'w', newline='') as myfile:
    myfile.write(authors)