首页 / PYTHON / Python中的CSV文件处理
Python中的CSV文件处理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python中的CSV文件处理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2605字,纯文字阅读大概需要4分钟。
内容图文
我使用以下格式输出到文本文件的空间数据:
COMPANY NAME
P.O. BOX 999999
ZIP CODE , CITY
+99 999 9999
23 April 2013 09:27:55
PROJECT: Link Ref
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Design DTM is 30MB 2.5X2.5
Stripping applied to design is 0.000
Point Number Easting Northing R.L. Design R.L. Difference Tol Name
3224808 422092.700 6096059.380 2.520 -19.066 -21.586 --
3224809 422092.200 6096059.030 2.510 -19.065 -21.575 --
<Remainder of lines>
3273093 422698.920 6096372.550 1.240 -20.057 -21.297 --
Average height difference is -21.390
RMS is 21.596
0.00 % above tolerance
98.37 % below tolerance
End of Report
如图所示,文件有一个页眉和一个页脚.数据由空格分隔,但列之间的数量不等.
我需要的是带有Easting,Northing和Difference的逗号分隔文件.
我想防止手动修改几百个大文件,并编写一个小脚本来处理文件.这是我到目前为止:
#! /usr/bin/env python
import csv,glob,os
from itertools import islice
list_of_files = glob.glob('C:/test/*.txt')
for filename in list_of_files:
(short_filename, extension )= os.path.splitext(filename)
print short_filename
file_out_name = short_filename + '_ed' + extension
with open (filename, 'rb') as source:
reader = csv.reader( source)
for row in islice(reader, 10, None):
file_out= open (file_out_name, 'wb')
writer= csv.writer(file_out)
writer.writerows(reader)
print 'Created file: '+ file_out_name
file_out.close()
print 'All done!'
问题:
>如何让以“点号”开头的行成为输出文件中的标题?我正在尝试将DictReader放在读取器/写入器位置,但无法使其工作.
>使用分隔符”’编写输出文件确实有效,但是用逗号代替每个空格,在输出文件中输入太多空列.我该如何规避这个?
>如何删除页脚?
解决方法:
我可以看到你的代码有问题,你正在为每一行创建一个新的编写器;所以你最终只会得到最后一个.
你的代码可能是这样的,不需要CSV阅读器或编写器,因为它很简单,可以被解析为简单的文本(如果你有文本列,有转义字符等问题就会出现问题).
def process_file(source, dest):
found_header = False
for line in source:
line = line.strip()
if not header_found:
#ignore everything until we find this text
header_found = line.starswith('Point Number')
elif not line:
return #we are done when we find an empty line, I guess
else:
#write the needed columns
columns = line.split()
dest.writeline(','.join(columns[i] for i in (1, 2, 5)))
for filename in list_of_files:
short_filename, extension = os.path.splitext(filename)
file_out_name = short_filename + '_ed' + extension
with open(filename, 'r') as source:
with open(file_out_name. 'w') as dest:
process_file(source, dest)
内容总结
以上是互联网集市为您收集整理的Python中的CSV文件处理全部内容,希望文章能够帮你解决Python中的CSV文件处理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。