【发布时间】:2020-09-12 20:02:24
【问题描述】:
我是一名初学者 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 文件将每个字符串中的每个字符放在单独的列中。我只想要 1 列中的“测试”字符串。
我试过这个解决方案:
for item in h3List:
print(item)
writer.writerow([item])
但是当我的字符串包含空格时,例如字符串“test hello” - 输出 csv 将各个列中的单词分开,如下所示:
我的代码有什么问题?对于我的生活,我似乎无法弄清楚。
如果此论坛中已经存在解决方案,我将不胜感激该帖子的链接。谢谢!!
【问题讨论】:
-
我无法重现您的第二个问题 -
writerow(['test hello'])不会将输入视为 2 列。您是否尝试使用简单的文本编辑器而不是电子表格编辑器来查看 csv 文件?你真的在每一行看到"test,hello"吗? -
这太奇怪了,亚历山大!你是对的,当我在文本编辑器上打开它时,单词之间没有逗号...... LibreOffice 正在惹我。非常感谢您的意见,希望我能继续前进!
-
乐于助人。请考虑在下面接受我的答案(接受答案是与投票不同的操作)。我想你首先遇到的每个字符都被视为序列元素的错误是每个 Python 程序员都遇到过很多次的问题。当这确实是预期的行为时,这是人们为了更容易迭代字符串的字符而付出的代价。
-
嗨,亚历山大,感谢您提供的信息!我已经接受了您的回答,如下所示,很抱歉没有早点这样做。仍然掌握这一切!