【发布时间】:2013-10-23 16:50:00
【问题描述】:
我有一个相当大的字符串要写入 python 文件对象。目前,当我尝试写入此字符串时,只有最后一行被写入文件。我已经测试以确保保存大字符串的变量实际上是<type 'str'>。以下是示例内容:
"0008788014065251","Rush Running - Bentonville","1030643167","5,788.00","11.55","5.77"
"0008788014065271","Rush Running - Fayetteville","1030643159","1,577.00","3.16","1.58"
"0008788014108297","Snow Ball Express","2423373737","11.00","0.04","0.02"
"0008788014108354","Snow Ball Express","2423378892","1,421.00","5.69","2.84"
"0008788014108374","Snow Ball Express","2423378959","59.00","0.24","0.12"
"0008788014110860","Sound Master","2423477231","135.00","0.54","0.27"
"0008788014074301","The Baby's Room","1030669816","6,912.00","13.82","6.91"
"0008788014110760","The Reserve","2423470822","715.00","2.86","1.43"
"0008788014077339","Tool Town LLC","1171354079","438.00","0.88","0.44"
我想将其写入文件,但每次执行file.write() 时,我只得到最后一行。我正在使用这个简单的文件打开和写入程序:
#link is a url to a csv file
export = urllib2.urlopen( link )
content = export.read()
with open("somefile.csv", "w") as file:
try:
file.write( content )
except Exception, e:
raise e
我读到我应该使用for 循环迭代content;但是,由于content 是一个字符串而不是一个列表/元组,for 循环将分解到每个字母并将字母写在单独的行上。
任何想法如何将此类内容写入文件?
【问题讨论】:
-
你可以
print len(content)来验证一下吗?你能告诉我们结果吗? -
如果您使用
repr检查content,您会得到什么?您是否检查过回车符或其他转义字符? -
你可以先用换行符分割,然后用逗号分割,以获得易于写入的列表结构(从字符串到一级列表到二级列表)。编辑:实际上,我认为您只需要按换行符拆分即可。
-
您使用的是什么操作系统?为什么要使用
urllib2.urlopen()打开文件,而普通的open()函数是有意这样做的? -
我刚刚尝试使用
urllib2.urlopen()打开一个 CSV 文件,但失败了:ValueError: unknown url type: rada.csv 目前,您的问题没有任何意义.