2.2筛选特定的行:

  • 行中的值满足某个条件
  • 行中的值属于某个集合
  • 行中的值匹配于某个模式(即:正则表达式)

  2.2.1:行中的值满足于某个条件:

  • 基础python版:

    

 #!/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)
filewriter = csv.writer(csv_out_file)
header = next(filereader)  # 使用CSV模块的next函数读出输入文件的第一行
filewriter.writerow(header)  # 将标题写入输出文件
for row_list in filereader:
supplier = str(row_list[0]).strip()  # 取出每行数据中的供应商名字,赋值给supplier变量
cost = str(row_list[3]).strip('$').replace(',', '')  # 使用列表索引
if supplier =='Supplier Z' or float(cost) > 600.0:
filewriter.writerow(row_list)
  • pandas版:

    #!/usr/bin/env python3
    
    import pandas as pd
    import sys input_file = sys.argv[1]
    output_file = sys.argv[2] data_frame = pd.read_csv(input_file) data_frame['Cost'] = data_frame['Cost'] = data_frame['Cost'].str.strip('$').astype(float)
    data_frame_value_meets_condition = data_frame.loc[(data_frame['Supplier Name'].str.contains('Z')) | (data_frame['Cost'] > 600.0), :] data_frame_value_meets_condition.to_csv(output_file, index = False)

    2.2.2:行中的值属于某个集合:

  • 基础python:

    

 #!/usr/bin/env python3  #  需求目的:保留那些购买日属于['1/20/14','1/30/2014']
import csv
import sys input_file = sys.argv[1]
output_file = sys.argv[2] important_dates = ['1/20/2014', '1/30/2014']  #  创建了一个列表的名为important_dates的集合,important_dates是一个列表变量,它就是要属于的集合 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)  #  使用CSV模块,的reader函数,创建一个文件读取对象,名为filereader,它可以用于读取文章中的行
filewriter = csv.writer(csv_out_file)  #  使用CSV模块的writer函数,创建了一个文件输出对象,名为filewriter,他可以用于将这个对象的数据写入输出文件
header = next(filereader)  #  使用CSV模块的next函数,读出输入文件的第一行
filewriter.writerow(header)  #  将header——标题行,写入输出文件
for row_list in filereader:  #  遍历读取的文章的每一行
a_date = row_list[4]  #  得到每一行的第5列信息,即为每一行的购买的信息,并将其赋值给变量a_date;这里使用的是索引值4
if a_date in important_dates:  #  判断变量a_date是否属于important_dates这个集合
filewriter.writerow(row_list)  #  如果是,则将该行数据写入输出文件

pandas:

  

 #!/usr/bin/env python3

 import pandas as pd
import sys input_file = sys.argv[1]
output_file = sys.argv[2] data_frame = pd.read_csv(input_file)  #  读取输入文件,将其读取成dataframe的形式
data_frame_value_in_set = data_frame.loc[data_frame['Purchase Date'].isin(important_dates), :]  #  pandas的简洁命令:isin() data_frame_value_in_set.to_csv(output_file,index = False)  #  将data_frame_value_in_set的变量值,转换成CSV的形式,写入到输出文件中

行中的值,匹配于某个正则表达式:

  • 基础python
    
1 #!/usr/bin/env python3
import csv
import re  #  导入正则表达式模块(re)
import sys
input_file = sys.argv[1]
output_file = sys.argv[2]
pattern = re.compile(r'(?P<my_pattern_group>^001-.*)', re.I)  # 使用re模块的compile函数,创建一个名为pattern的正则表达式的变量
with open(input_file, 'r', newline = ' ') as csv_in_file:
with open(output_file, 'w', newline = ' ') as csv_in_file:
filereader = csv.reader(csv_in_file)
filewriter = csv.writer(csv_out_file)
header = next(filereader)
fliewriter.writerow(header)
for row_list in filereader:
invoice_number = row_list[1] #
if pattern.search(invoice_number): # 使用re模块的search函数在invoice_number的值中寻找模式
filewriter.writerow(row_list)   # 如果模式出现在invoice_number中,就将这行内容写入输出文件中
  • pandas

    

 #!/usr/bin/env python3

 import pandas as pd
import sys input_file = sys.argv[1]
output_file = sys.argv[2] data_frame = pd.read_csv(input_file)
data_frame_value_matches_pattern = data_frame.loc[data_frame['Invoice Number'].str.startswith("001-"), :]
data_frame_value_matches_pattern.to_csv(output_file, index = False)

最新文章

  1. 【HOW】SharePoint如何彻底删除用户
  2. Jmeter常用函数之__CSVRead使用
  3. java8 中的时间和数据的变化
  4. Zend Studio 错误集锦[PHP]
  5. linux下配置双网卡及RAC规划——1
  6. atomikos分布式事务的几个坑
  7. &#39;vt100&#39;: unknown terminal type.
  8. Android 签名(1)为什么要签名
  9. [转]mac下Python升级到指定的版本
  10. javascript EcmaScript5 新增对象之Object.freeze
  11. hdu 1565&amp;&amp;hdu 1569 (最大点权独立集)
  12. android应用编译失败 ResXMLTree_node size 类错误,以及 android studio 项目内搜索
  13. JDBC连接数据以及操作数据
  14. 带着问题写React Native原生控件--Android视频直播控件
  15. 201521123108《Java程序设计》第1周学习总结
  16. Linux基础:文件查找find
  17. Swing 混合布局
  18. POJChallengeRound2 Tree 【数学期望】
  19. h5小功能_classList和自定义属性data
  20. linux文件压缩解压命令

热门文章

  1. vue组件总结(三)
  2. tomcat 启动显示指定的服务未安装
  3. hdu-1068&amp;&amp;POJ1466 Girls and Boys---最大独立集
  4. hdu-1162 Eddy&#39;s picture---浮点数的MST
  5. Android(java)学习笔记94: SurfaceView使用
  6. iOS中的崩溃类型
  7. 【BZOJ1040】[ZJOI2008] 骑士(基环外向树DP)
  8. 毛毛虫组【Beta】Scrum Meeting 2
  9. 国产中标麒麟Linux部署dotnet core 环境并运行项目 (三) 部署运行WEB API项目
  10. mysql基础,修改数据表