我是电子工程二年级的学生。 我刚开始为我的项目学习python。在
我打算用如下格式解析csv文件
3520005,"Toronto (Ont.)",C ,F,2503281,2481494,F,F,0.9,1040597,979330,630.1763,3972.4,1
2466023,"Montréal (Que.)",V ,F,1620693,1583590,T,F,2.3,787060,743204,365.1303,4438.7,2
5915022,"Vancouver (B.C.)",CY ,F,578041,545671,F,F,5.9,273804,253212,114.7133,5039.0,8
3519038,"Richmond Hill (Ont.)",T ,F,162704,132030,F,F,23.2,53028,51000,100.8917,1612.7,28
像下面这样的文本文件
多伦多2503281 蒙特利尔1620693 温哥华578041
我正在提取第1列和第5列并将其保存到文本文件中。在
这就是我目前所拥有的。在
^{pr2}$这对我不起作用,我可以从csv文件中提取数据,行[1],行[5]。(我可以打印出来) 但我不知道如何以我想要的格式将它写入.text文件。在
另外,我还要处理第一列,例如“多伦多(安大略省)”到“多伦多”。 我很熟悉find()函数,我假设可以使用“(”作为停止字符,从多伦多(Ont.)中提取多伦多, 但根据我的研究,我不知道如何使用它并要求它返回字符串(多伦多)。在
我的问题是:
line[1]
的数据格式是什么?
f.write()
怎么会不工作?在find()
或其他方法将Toronto
从Toronto(Ont)
中提取成字符串形式。在我的想法是,我可以把这两个字符串加在一起,比如c = a+ ' ' + b
,这样就可以得到我想要的格式了。
所以我可以使用f.write()
写入文件:)
抱歉,如果我的问题听起来太简单或愚蠢。在
谢谢
甄
csv.reader
读取的所有数据都是字符串。在对此有多种解决方案,但最简单的方法是在
(
上拆分并去掉所有空白:或者在一行中:
^{pr2}$另一个选择是使用正则表达式(re module)。
代码中的具体问题如下:
使用
%
语法格式化字符串,必须提供单个值或iterable。在您的情况下,这应该是:另一种完全相同的方法是使用^{} 方法。在
这是格式化字符串的一种灵活方法,我建议您阅读docs中的相关内容。在
关于你的代码,有两件事你应该考虑。在
始终记住关闭文件处理程序。如果您使用
with open(...) as fp
,这将由您负责。在不要使用保留字作为变量名。
file
就是这样一个东西,如果将其用作其他东西(隐藏it),您可能会在以后的代码中引起问题。要写入数据,可以使用csv.writer:
在Python2.6及更高版本中,您可以在一个语句中组合多个
with
语句:结合这些知识,您的脚本可以重写为:
我不记得
csv
那么好,所以我不知道它是不是一个字符串。你得到了什么错误?在任何情况下,假设它是一个字符串,那么您的行应该是:换句话说,你需要一组括号。另外,在字符串中应该有一个尾随空格。
有点老套但简洁的方法是:
line[1].split("(")[0]
这将创建一个在
(
符号上拆分的列表,然后提取第一个元素。相关问题 更多 >
编程相关推荐