python3 csv 模板_python-Python3:编写csv文件

python-Python3:编写csv文件

我正在尝试在Windows计算机上使用Python 3.2编写一个简单的CSV文件,但是我没有运气。 从Python 3.2的csv模块文档中:

>>> import csv

>>> spamWriter = csv.writer(open('eggs.csv', 'w'), delimiter=' ',

... quotechar='|', quoting=csv.QUOTE_MINIMAL)

>>> spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])

>>> spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

生成的文件的每一行都以字节序列3005735759606449159152结尾,因此当您使用例如MS Excel打开文件时,每行看起来都有一个多余的空行。 这不是“ CSV文件”。

请注意,如果我在Python 3.2中尝试使用相同的Python 2.7示例(文件模式的最大区别是'w'和3005735759606449159153),则在尝试spamWriter.writerow时会出现错误:

追溯(最近一次呼叫最近):TypeError中的文件“”,第1行:“ str”不支持缓冲区接口

如何在Windows计算机上从Python 3.2编写一个简单的CSV文件?

6个解决方案

63 votes

文档说您应该使用open('eggs.csv', 'w', newline='')

[HTTP://docs.Python.org/朋友3可/library/CSV.HTML#ID2]

alexanderlukanin13 answered 2020-08-10T21:05:45Z

19 votes

这将适用于Python 2和Python 3:

if sys.version_info >= (3,0,0):

f = open(filename, 'w', newline='')

else:

f = open(filename, 'wb')

Dave Burton answered 2020-08-10T21:06:04Z

7 votes

如脚注所示:

csv.writer(csvfile, dialect='excel', **fmtparams)

如果csvfile是文件对象,则应使用newline =''将其打开。

如果未指定newline ='',则嵌入引号中的换行符将无法正确解释,并且在使用\ r \ n linendings的平台上将添加额外的\ r。 指定newline =''应该永远是安全的,因为csv模块会执行自己的(通用)换行符处理。

以下变体适用于Linux和Windows:

spamWriter = csv.writer(open('eggs.csv', 'wb'), delimiter=' ', quotechar='|',

quoting=csv.QUOTE_MINIMAL, newline='')

spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])

spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

phihag answered 2020-08-10T21:06:38Z

2 votes

要直接回答您的问题,您应该可以使用lineterminator格式化参数:

...因此修改此行应该可以(未经测试):

>>> spamWriter = csv.writer(open('eggs.csv', 'w'), delimiter=' ',

... quotechar='|', quoting=csv.QUOTE_MINIMAL, lineterminator='\n')

至于为什么该示例无法立即使用,对我来说似乎有点像个错误。

Gerrat answered 2020-08-10T21:07:06Z

1 votes

我将其中一个代码从Python2.6.6移至python3.4.3时解决了此错误

Python2.6.6(我正在尝试对我的csvfile进行混淆)

with open( os.path.join(path, name) , 'r') as mycsvfile:

writer = csv.writer(open(newFilename, 'w'))

上面的代码在python2.6.6上运行良好,但是在python3.4.3上却无法正常工作,因为当我尝试运行python3文件时遇到了utf-8 unicode错误,因此我进行了以下更改Python3.4.4

import codecs

with codecs.open(os.path.join(path, name) , 'r', encoding='ISO-8859-1') as mycsvfile:

writer = csv.writer(open(newFilename, 'w'))

就是这样,我的代码现在可以正常工作,基本上python3并未考虑某些unicode,我们需要使用编解码器导入使其正常工作,希望对您有所帮助。

Prashanth answered 2020-08-10T21:07:40Z

1 votes

[对于Python 2.x]spamWriter的此实现为我工作...

with open('assignmentresults.csv', 'wb') as csvfile:

spamwriter = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)

spamwriter.writerow(["Hullo", "World"])

SashaZd answered 2020-08-10T21:08:00Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值