1.基础python代码:

 #!/usr/bin/env python3  # 可以使脚本在不同的操作系统之间具有可移植性

 import sys  # 导入python的内置sys模块,使得在命令行中向脚本发送附加的输入
# sys模块的argv参数,传递给python脚本的命令行参数列表,也就是我们运行的脚本的输入文件和写入csv格式的输出文件
  # 用命令行读取CSV的输入文件和写入CSV格式的输出的文件
  # 用命令行输入: python script_name.py  "C:\path\to\input_file.csv"  "C:\path\to\output_file.csv"
          python 告诉计算机使用Python程序来处理其他的命令行参数。Python收集其余参数,放入argv这个列表
          列表中的第一个元素argv[0]用作脚本名称,所以argv[0]表示script_name.py
          python将argv[1],即第二个命令行参数————"C:\path\to\input_file.csv",即输入文件的路径和文件名赋值给变量,input_file
          python将argv[2],即第三个命令行参数————"C:\path\to\output_file.csv",即输入文件的路径和文件名赋值给变量,output_file
 input_file = sys.argv[1]
output_file = sys.argv[2] with open(input_file, 'r', newline = '') as filereader:  #  with语句,使用with语句,将input_file打开为一个文件对象filereader;'r'表示是只读模式
with open(output_file, 'w', newline = '') as filewriter:  #  with语句,使用with语句,将output_file打开为一个文件对象filewriter;'w'表示可写模式;with语句可以在语句结束时,自动关闭文件对象
header = filereader.readline()  #  使用文件对象的readline方法,读取输入文件扥第一行数据,将读入得字符串
header = header.strip()  #  使用strip函数去除每行两端的空格、制表符和换行符
header_list = header.split(',')  #  使用split函数用逗号,将字符串拆分成一个列
print(header_list)
filewriter.write(','.join(map(str, header_list)) + '\n')  #  string模块未spring
   for row in filereader:
row = row.strip()
row_list = row.split(',')
print(row_list)
filewriter.write(','.join(map(str, row_list)) + '\n')

  2.pandas:

      

#!/usr/bin/env python3

import sys
import pandas as pd input_file = sys.argv[1]
output_file = sys.argv[2]
#``data_frame_数据框是一种存储数据的方式,数据框中保留了“表格”这种数据组织方式;pandas中下嵌套pandas脑,所以要使用数据框,必须导入pandas包
data_frame = pd.read_csv(input_file) print(data_frame) data_frame.to_csv(output_files, pandas_output_csv)

但是,以上代码,当读取数据$1,006,015.00时,会出错,具体错误为:本来应该将数据$1,006,015.00,分割为:$1,006,015.00,现在,结果却为:"$1",“006”,“015.00”

其原因,在于,CSV文件的存储形式,即为,使用逗号“,”分割一列列数据的分隔符,正是逗号“,”例如:Name, Age, $100.00, "Beijing"

所以,读取操作CSV文件时,是利用逗号","来分割各列的数据,但是当现在出现了数据:$2,000,00.00,由于数据中也含逗号,所以导致该数据整体本身被分割成,$2  000   00.00三份数据,

出现错误。

解决方案:使用CSV模块——python内置CSV模块,即被设计用于正确地处理数据值中的嵌入逗号和其他复杂模式的

 #!/usr/bin/env python3
import csv
import sys input_file = sys.argv[1]
output_file = sys.argv[2] with open(input_file, 'r', newline = ' ') as csv_in_file:
with open(output_file, 'w', newline = ' ') as csv_out_file:
filereader = csv.reader(csv_in_file, delimiter = ',')  #  使用CSV模块中的reader函数,创建了一个文件读取对象filereader,,用于读取输入文件的行
filewriter = csv.writer(csv_out_file, delimiter = ',')  #  使用CSV模块中的writer函数,创建了一个文件读取对象filewriter,用于将数据输出文件
                                            参数delimiter是默认分隔符
for row_list in filereader:
print(row_list)
filewriter.writerow(row_list)  #  将filewriter对象中的每行列表值,用writerow函数,写入输出文件

Python数据分析基础——读写CSV文件的更多相关文章

  1. Python数据分析基础——读写CSV文件2

    2.2筛选特定的行: 行中的值满足某个条件 行中的值属于某个集合 行中的值匹配于某个模式(即:正则表达式) 2.2.1:行中的值满足于某个条件: 基础python版: #!/usr/bin/env p ...

  2. python学习之读写csv文件(使用pandas)

    简介 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序 ...

  3. python3读写csv文件

    python读取CSV文件   python中有一个读写csv文件的包,直接import csv即可.利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下. 1. 读文件 csv_ ...

  4. (Python基础教程之十二)Python读写CSV文件

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  5. 使用Python读写csv文件的三种方法

    Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是 ...

  6. python读写csv文件

    文章链接:https://www.cnblogs.com/cloud-ken/p/8432999.html Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗 ...

  7. python习题_读写csv格式的文件

    1.读写TXT文件 # *_* coding : UTF-8 *_* # 开发人员 : zfy # 开发时间 :2019/7/7 16:26 # 文件名 : lemon_10_file.PY # 开发 ...

  8. Python数据分析基础PDF

    Python数据分析基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1ImzS7Sy8TLlTshxcB8RhdA 提取码:6xeu 复制这段内容后打开百度网盘手 ...

  9. 用opencsv文件读写CSV文件

    首先明白csv文件长啥样儿: 用excel打开就变成表格了,看不到细节 推荐用其它简单粗暴一点儿的编辑器,比如Notepad++, csv文件内容如下: csv文件默认用逗号分隔各列. 有了基础的了解 ...

随机推荐

  1. WIN10+Ubuntu14.04 双系统 ubuntu无法有线上网的问题

    注:在WIN10 的引导下安装了双系统,ubuntu有线无法上网,无线却可以. 上网一查,发现之前许多安装双系统的人都存在以上的问题. 常见的解决方法是: 在WINDOWS下关闭网络唤醒,还有一些检查 ...

  2. WPS去掉英语单词下面的红斜线

    我们在使用WPS的时候,经常会用到英语但是,但是在编码的时候,有些单词是缩写形成的,WPS就会自动验证,产生红色波浪线,提示我们单词写错的问题,那看起来就显得很不美观别扭 那么我们不想要这个红斜杠,怎 ...

  3. Redis基础对象

    Redis 中每个对象都由一个 redisObject 结构表示 typedef struct redisObject { //类型 unsigned type:; //编码 unsigned enc ...

  4. Return-to-dl-resolve浅析

    本文介绍一种CTF中的高级rop技巧-Return-to-dl-resolve,不久前的0CTF中的babystack和blackhole就用到了这个技巧. 预备知识 在开始本文前希望大家能预先了解一 ...

  5. 【Java-JVM】定量分析解决OutOfMemoryError: PermGen space, 来看科学量化分析

    网络上搜集,有操作有分析. 一.问题 在部署大型的 Java Web项目的时候,或者在 MyEclipse 中进行调试的时候经常出现: OutOfMemoryError: PermGen space ...

  6. Bootstrap 轮播(Carousel)插件

    轮播插件是一种灵活的响应式的向站点添加滑块的方式.除此之外,内容也是非常灵活的.可是图像,内嵌框架,视频或者其它您想的放置任何内容的类型. 下面是一个简单的幻灯片,使用轮播(carousel)插件显示 ...

  7. MyISAM 和 InnoDB 的区别与优化

    MyISAM 和 InnoDB 的基本区别 1.InnoDB不支持FULLTEXT类型的索引. 2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from tabl ...

  8. grep过滤目录或文件方法

    在使用grep在指定目录下查找包含指定字符串的文件是,我们想过滤(即不递归查询指定目录)时!可以使用 –exclude-dir 参数 单个目录实例 搜索.目录但不搜索在.目录下的.svg目录中包含&q ...

  9. 笔试算法题(46):简介 - 二叉堆 & 二项树 & 二项堆 & 斐波那契堆

    二叉堆(Binary Heap) 二叉堆是完全二叉树(或者近似完全二叉树):其满足堆的特性:父节点的值>=(<=)任何一个子节点的键值,并且每个左子树或者右子树都是一 个二叉堆(最小堆或者 ...

  10. Zabbix监控告警Lack of free swap space on Zabbix server解决办法

    报错详情如下: 是因为Zabbix监控没有考虑虚拟主机的交换空间情况 解决办法修改配置 修改表达式内容:{Template OS Linux:system.swap.size[,pfree].last ...