[关闭]
@zealtric 2021-08-20T03:02:06.000000Z 字数 2040 阅读 152

Python 1-2

python


文件的读写操作

首先,导入csv模块

  1. import csv

Python 的 CSV模块的使用方法,包括,reader, writer, DictReader, DictWriter.register_dialect
http://www.cnblogs.com/sislcb/archive/2008/12/15/1355481.html

但是对于tsv文件,不知道为什么不需要再次导入tsv模块(甚至好像没有这种模块),,可能csv模块涵盖了不止csv文件,还有tsv文件

导入文件

1. 只读模式

  1. with open('CityTemps.csv', 'rU') as my_temps_file:
  2. my_temps_reader = csv.DictReader(my_temps_file)

例子

  1. import csv
  2. all_temps = []
  3. with open('CityTemps.csv', 'rU') as my_temps_file:
  4. my_temps_reader = csv.DictReader(my_temps_file)
  5. for row in my_temps_reader:
  6. all_temps.append(row['temp'])
  7. print all_temps
  1. DictReader:读取csv的,生成一个字典类型的返回
  2. row就是随便命名的一个循环儿子,不需要做声明,随便写就行。而对于‘temp’,则是CityTemps.csv里面的一个属性

2. 写模式(直接上例子)

例子

  1. import csv
  2. attributes = ['city', 'state', 'lat', 'lng', 'temp', 'region', 'coastal']
  3. temps_regions_file = open('OurTempsRegions.csv','w')
  4. csvwriter = csv.DictWriter(temps_regions_file, delimiter=',', fieldnames=attributes)
  5. csvwriter.writeheader()
  6. cities = []
  7. with open('CityTemps.csv', 'rU') as citytemps_file:
  8. for row in csv.DictReader(citytemps_file):
  9. cities.append(row)
  10. regions = []
  11. with open('Regions.tsv', 'rU') as regions_file:
  12. for row in csv.DictReader(regions_file, delimiter='\t'):
  13. regions.append(row)
  14. for city in cities:
  15. for region in regions:
  16. if region['state'] == city['state']:
  17. city.update(region)
  18. csvwriter.writerow(city)
  19. break
  20. temps_regions_file.close()

这里呢,首先OurTempsRegions.csv是一个空文档,然后CityTemps.csv和Regions.tsv是两个有内容的文档。
CityTemps.csv里面有'city', 'state', 'lat', 'lng', 'temp'五个属性
Regions.tsv里面有'state', 'region', 'coastal'三个属性
这里将这两个文件信息合并,写入到OurTempsRegions.csv中去

文件的读写模式

rU或Ua以读方式打开,同时提供通用换行符支持

http://www.360doc.com/content/14/0425/12/16044571_372066859.shtml

导入进来的数据一般是字符串型,要进行数据操作时一般我们要先将他们转为整形或者浮点型

  1. # iterate through index, and typecast each element
  2. for index in range(len(all_temps)):
  3. all_temps[index] = int(all_temps[index])

一个有趣的小函数,format函数

  1. # all cities with 'ville' in them
  2. for city_info in all_temps_regions:
  3. if 'ville' in city_info['city']:
  4. print 'City: {}, State: {}, Temp: {}'.format(city_info['city'], city_info['state'], city_info['temp'])

输出

  1. City: Jacksonville, State: Florida, Temp: 45
  2. City: Louisville, State: Kentucky, Temp: 27
  3. City: Nashville, State: Tennessee, Temp: 31

http://www.jb51.net/article/63672.htm

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注