Python - 如何将列表中的每个项目导出到单独的文本文件
Python - How to export each item in a list to individual text file
我有一个 csv
文件,其中包含我要循环访问的几十个网页。
目标是从网页中获取文本,取出html标记(使用html2text
),然后将干净的文本保存为.txt
文件。我的想法是将每个网页的干净文本保存为列表中的一个项目,然后将列表中的每个项目导出到一个 txt 文件。
我可以让程序循环访问 url 并取出 html,但保存到单个 txt 文件时会不断抛出错误。谁能给我一些关于如何做到这一点的想法?
代码:
from stripogram import html2text
import urllib
import csv
text_list = []
urls = csv.reader(open('web_links2.csv'))
for url in urls:
response = urllib.urlopen(url[0])
html = response.read()
text = html2text(html)
text_list.append(text)
print text_list
for item in text_list:
f = open('c:\users\jacob\documents\txt_files\%s.txt'%(item,), 'w')
f.write(item)
f.close
您似乎对文件名及其内容使用了相同的值 (item
),因此除非这些文件是单个单词,否则您可能生成了非法文件名。
此外,为了调用 close
,您需要提供括号。
我认为您可能不想将完整项目添加到文件名中,因为该项目是网页的全部 html。在你的情况下,我要么添加一些逻辑来给它一个简洁的网站名称,要么只使用一个索引,这样你就可以迭代它。
另外文件路径定义也应该不同,尽量使用双引号和\代替。
你可能想做这样的事情:
i = 0
for item in text_list:
i += 1
#also use format instead of the %s
f = open("c:\users\jacob\documents\txt_files\{0}.txt".format(i), 'w')
f.write(item)
f.close()
你的主要问题是你没有转义 t
使用原始字符串 r
:
open(r'c:\users\jacob\documents\txt_files\%s.txt'%(item,), 'w')
\t
是制表符,因此请在示例中使用原始字符串,在文件路径中使用双 \
或正斜杠 /
。
In [11]: s = "\txt_files"
In [12]: print(s)
xt_files
In [13]: s = r"\txt_files"
In [14]: print(s)
\txt_files
f.close <- missing parens to call the method
使用 with 打开文件,忘记调用 close 之类的事情不会成为问题:
with open(r'c:\users\jacob\documents\txt_files\%s.txt'%(item,), 'w') as f: # closes your files automatically
f.write(item)
我有一个 csv
文件,其中包含我要循环访问的几十个网页。
目标是从网页中获取文本,取出html标记(使用html2text
),然后将干净的文本保存为.txt
文件。我的想法是将每个网页的干净文本保存为列表中的一个项目,然后将列表中的每个项目导出到一个 txt 文件。
我可以让程序循环访问 url 并取出 html,但保存到单个 txt 文件时会不断抛出错误。谁能给我一些关于如何做到这一点的想法?
代码:
from stripogram import html2text
import urllib
import csv
text_list = []
urls = csv.reader(open('web_links2.csv'))
for url in urls:
response = urllib.urlopen(url[0])
html = response.read()
text = html2text(html)
text_list.append(text)
print text_list
for item in text_list:
f = open('c:\users\jacob\documents\txt_files\%s.txt'%(item,), 'w')
f.write(item)
f.close
您似乎对文件名及其内容使用了相同的值 (item
),因此除非这些文件是单个单词,否则您可能生成了非法文件名。
此外,为了调用 close
,您需要提供括号。
我认为您可能不想将完整项目添加到文件名中,因为该项目是网页的全部 html。在你的情况下,我要么添加一些逻辑来给它一个简洁的网站名称,要么只使用一个索引,这样你就可以迭代它。
另外文件路径定义也应该不同,尽量使用双引号和\代替。 你可能想做这样的事情:
i = 0
for item in text_list:
i += 1
#also use format instead of the %s
f = open("c:\users\jacob\documents\txt_files\{0}.txt".format(i), 'w')
f.write(item)
f.close()
你的主要问题是你没有转义 t
使用原始字符串 r
:
open(r'c:\users\jacob\documents\txt_files\%s.txt'%(item,), 'w')
\t
是制表符,因此请在示例中使用原始字符串,在文件路径中使用双 \
或正斜杠 /
。
In [11]: s = "\txt_files"
In [12]: print(s)
xt_files
In [13]: s = r"\txt_files"
In [14]: print(s)
\txt_files
f.close <- missing parens to call the method
使用 with 打开文件,忘记调用 close 之类的事情不会成为问题:
with open(r'c:\users\jacob\documents\txt_files\%s.txt'%(item,), 'w') as f: # closes your files automatically
f.write(item)