我是一名初级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)
如上图所示,输出csv文件将每个字符串中的每个字符放置在各个列中。我只希望“test”字符串位于1列中
我尝试了这个解决方案:
for item in h3List:
print(item)
writer.writerow([item])
但是,例如,当my string包含空格时,字符串“test hello”-输出csv会将各个列中的单词分隔开来,如下所示:
我的代码有什么问题?就我个人而言,我似乎无法理解这一点
如果解决方案已经存在于这个论坛中,我将非常感谢该帖子的链接。谢谢
原因是
writer.writerow
希望您传递一些可以迭代的内容—列表、元组或其他任何内容。当你给它传递一个字符串时,它被认为是一个iterable——一个字符序列。所以要解决这个问题,您需要在调用时将项目置于方括号中:将其设置为writer.writerow([item])
,而不是writer.writerow(item)
将当前代码替换为以下代码
我在用熊猫
相关问题 更多 >
编程相关推荐