如何告诉Python打开CSV文件,并将每行的所有列合并到新TXT文件的新行中?
解释:
我试图从网站上下载一堆成员资料,用于研究项目。为此,我想写一个TXT文件中所有URL的列表。
网址类似于:website.com-name-country-title-id.html
我编写了一个脚本,为每个成员获取所有这些信息,并将它们保存在CSV文件中的列(名称/国家/标题/ ID)中,如下所示:
mark japan rookie married
john sweden expert single
suzy germany rookie married
etc...
现在我想打开这个CSV并用这样的行写一个TXT文件:
www.website.com/mark-japan-rookie-married.html
www.website.com/john-sweden-expert-single.html
www.website.com/suzy-germany-rookie-married.html
etc...
这是我到目前为止的代码。你可能会说我几乎不知道我在做什么,所以非常感谢帮助!!!
import csv
x = "http://website.com/"
y = ".html"
csvFile=csv.DictReader(open("NameCountryTitleId.csv")) #This file is stored on my computer
file = open("urls.txt", "wb")
for row in csvFile:
strArgument=str(row['name'])+"-"+str(row['country'])+"-"+str(row['title'])+"-"+str(row['id'])
try:
file.write(x + strArgument + y)
except:
print(strArgument)
file.close()
运行此操作后我没有收到任何错误消息,但TXT文件完全为空。
答案 0 :(得分:1)
不使用DictReader
,而是使用常规阅读器,以便更轻松地加入行:
import csv
url_format = "http://website.com/{}.html"
csv_file = 'NameCountryTitleId.csv'
urls_file = 'urls.txt'
with open(csv_file, 'rb') as infh, open(urls_file, 'w') as outfh:
reader = csv.reader(infh)
for row in reader:
url = url_format.format('-'.join(row))
outfh.write(url + '\n')
with
语句可确保在代码完成后再次正确关闭文件。
我做了进一步的改变:
csv
模块本身处理行结尾,因为正确引用的列数据可以在其中嵌入换行符。str.format()
)比使用字符串连接更灵活。str.join()
允许您将一系列字符串与分隔符连接在一起。答案 1 :(得分:-1)
它实际上非常简单,你正在使用字符串,但是你要打开的文件正在以字节模式打开,因此每次写入失败并将其打印到屏幕上。尝试更改此行:
file = open("urls.txt", "wb")
到此:
file = open("urls.txt", "w")
编辑: 我有所纠正,但我想指出,由于缺少换行符或其他形式的分隔符,您打算以后如何使用这些URL?如果你在每个网址之间添加换行符,那么它们很容易恢复