【问题标题】:Unnecessary commas appearing in Python listPython 列表中出现不必要的逗号
【发布时间】:2021-03-01 20:41:03
【问题描述】:

就上下文而言,我对 Python 和一般编程很陌生。

我有一个看起来非常正常的列表(使用 selenium webdriver 创建),但是当我尝试将其导出到 CSV 文件时,列表中的每个值都被解释为在每个字符串值之间以逗号分隔。这会导致 CSV 文件为我的列表值中的每个字符串值创建一个列。

在 Numbers macOS 应用程序中,我更改了设置,以便文件“使用制表符分隔值”。这会将每个列表值放在一个列(名称)下,但我仍然看到逗号分隔 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)

谢谢!

【问题讨论】:

  • clist 中到底有什么?
  • clist 的值是多少?听起来您可能在打算执行 ["Boston"] 时执行了类似 list("Boston")(将字符串转换为字符列表)之类的操作。
  • 请贴出更完整的代码

标签: python selenium csv selenium-webdriver export-to-csv


【解决方案1】:

您可以使用数据框简单地做到这一点。它不会在 Excel 中跳过一行。

df = pd.DataFrame(clist,columns=['Name'])
df.to_csv('list.csv', index=False)

导入

import pandas as pd

【讨论】:

    【解决方案2】:

    您正在使用writerows(rows)Each element in rows has to be an iterable (e.g., a list) of strings or numbers.

    在您的 for 循环中,只需将 clist.append(value.text) 更改为 clist.append([value.text])。这样,要写入的每一行都将包含一个只有 1 个字符串元素的列表。

    for value in data:
        print(value.text)
        clist.append([value.text])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多