将字符串列表写入csv

2024-09-28 19:20:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一名初级Python程序员,在这个论坛上,我一直没有成功地找到解决我问题的方法。这可能是因为我无法用正确的术语描述我的问题——如果是这样,我提前道歉

我使用BeautifulSoup从html文档中提取字符串列表。我想将此字符串列表转换为csv(单列中每行1个字符串)。但是,我的程序将每个字符串的每个字符放在它自己的列中

import csv

h3List= []

soup = BeautifulSoup(open('test.html'),'html.parser')

h3 = soup.find_all('h3')

for text in h3:
    h3List.append(text.text)

with open('h3List.csv','w') as f:
    writer = csv.writer(f)
    for item in h3List: 
        print(item)
        writer.writerow(item)

output csv

如上图所示,输出csv文件将每个字符串中的每个字符放置在各个列中。我只希望“test”字符串位于1列中

我尝试了这个解决方案:

for item in h3List:
    print(item)
    writer.writerow([item])

但是,例如,当my string包含空格时,字符串“test hello”-输出csv会将各个列中的单词分隔开来,如下所示:

strings with spaces

我的代码有什么问题?就我个人而言,我似乎无法理解这一点

如果解决方案已经存在于这个论坛中,我将非常感谢该帖子的链接。谢谢


Tags: csv字符串textintest列表forhtml
2条回答

原因是writer.writerow希望您传递一些可以迭代的内容—列表、元组或其他任何内容。当你给它传递一个字符串时,它被认为是一个iterable——一个字符序列。所以要解决这个问题,您需要在调用时将项目置于方括号中:将其设置为writer.writerow([item]),而不是writer.writerow(item)

将当前代码替换为以下代码

我在用熊猫

import pandas as pd
import csv

h3List= []

soup = BeautifulSoup(open('test.html'),'html.parser')

h3 = soup.find_all('h3')

for text in h3:
    h3List.append(text.text)
df = pd.DataFrame(h3List)
df.to_csv('h3_test.csv')


相关问题 更多 >