对于上下文,我对Python和编程非常陌生。
我有一个列表(使用selenium webdriver创建),看起来完全正常,但是当我试图将其导出到CSV文件时,列表中的每个值都被解释为在每个字符串值之间使用逗号分隔。这将导致CSV文件为列表值中的每个字符串值创建一个列。
在Numbers macOS应用程序中,我更改了设置,使文件"使用tab."分隔值"。这将每个列表值放在一列(Name)下,但我仍然看到CSV文件中的每个字符串值都用逗号分隔。
我的行现在看起来像这样:
B,o,s,t,o,n
但是我想让它反映出我在python上的列表的样子,也就是:
Boston
下面是我用Python编写的CSV文件。
from selenium import webdriver
import time
import csv
PATH = "/users/charlesmiele/desktop/chromedriver"
driver = webdriver.Chrome(PATH)
url = 'https://www.niche.com/colleges/search/best-colleges/?page=1'
clist = []
driver.get(url)
time.sleep(1)
data = driver.find_elements_by_tag_name('h2')
for value in data:
print(value.text)
clist.append(value.text)
time.sleep(1)
with open("list.csv", 'w') as f:
writer = csv.writer(f)
writer.writerow(['Name'])
writer.writerows(clist)
driver.quit()
print(clist)
谢谢!
您可以简单地使用数据框架来完成此操作。它不会在Excel中跳过一行。
df = pd.DataFrame(clist,columns=['Name'])
df.to_csv('list.csv', index=False)
进口import pandas as pd
您正在使用writerows(rows)
。rows
中的每个元素必须是字符串或数字的可迭代对象(例如,列表)。
在for
-循环中,只需将clist.append(value.text)
更改为clist.append([value.text])
。这样,要写入的每一行将由一个只有1个字符串元素的列表组成。
for value in data:
print(value.text)
clist.append([value.text])