csv文件
什么是csv文件
csv既逗号分隔符文件,行数据用’,’分隔,列数据用换行符’\n’分隔
读取与写入csv文件
with open(filename, 'r', encoding='gbk') as rf: reader = csv.reader(rf, dialect=csv.excel) # 按行读取,读取的是存储为excel可读格式的csv文件,这个文件可以用excel打开查看
with open(r'clean_data\clean_data_0.5_no_repeat.csv', 'w', encoding='gbk', newline='') as f: writer = csv.writer(f, dialect=csv.excel, delimiter=',') for data in final_dataset: writer.writerow(data) # 按行写入,写入格式也是csv.excel,会把一个二维列表自动存储为表格,行列对应,存储的内容是原封不动的
csv文件存储格式与换行问题
用以上方法读取的csv文件每一行每一列取出的都是字符串’str’格式,对于字典要用eval()函数自动转回原本对应的格式,而int等也要用对应函数转换
newline=””设置存储的行与行之间没有空行,否则会隔行存储。
json格式
json格式文件特点
json格式文本对{对象:值},例如: {“name”: “John Doe”, “age”: 18, “address”: {“country” : “china”, “zip-code”: “10000”}},和字典有些相似,存储的值可以是字符串,数组,字典等,这个格式好处在于可以存储结构相对复杂的数据并且易于存取。
json与str,json的读取
在实际操作中似乎直接把json放在列表里就可以和其他数据一样存储到csv文件中,在使用csv.writer方法时,双引号的问题被自动解决了,取出以后和其他数据一样都是str,使用json.loads()方法即可转换为json格式数据,写入的时候可以用同样的方法转换。
转换后的json格式数据按对象取值的方法与字典相似,即data[‘对象名’]->值
python集合、列表、字典
在处理重复数据时(这里指字符串或数值的数据),可以采用集合进行存储,因为集合中元素不能重复,可以很简单的使用set()或list()方法将集合和列表相互转换,因此可以利用集合去重后在转换为list存储。
要注意的是,创建空的集合要使用a = set()方法,如果是a={}则是一个空的字典。
当存储集合时如果集合为空会存储一个空集,内容为set()。
集合增加元素要用add()方法,集合没有列表的append()方法。
在处理数据时,字典一个很大的用处在于给出的key是有语义的,这提高了代码的可读性,list[1]中的数据是什么我们是不知道的,而dict[‘key’]则很好懂。
tensorflow输入数据格式转化
constant方法生成张量,tensorflow搭建的算法输入数据都是相应格式的张量,而不是列表,因此如果采用csv.reader读取csv文件而不是tensorflow自带的方法读取csv文件的话,要用对应的tensorflow或者numpy方法将数据转化为张量,通常为[None,*]None为数据量比如有2000条训练文本,None就是2000,后面的就是处理后的数据格式,比如设置的padding,maxlen=500的embedding size=12后的文本数据,格式就是[None,500,12],label数据格式也要与之相对应。
tensorflow自带的读取csv文件的方法可以直接得到tensor格式的数据,但是由于我要处理的csv文件是文本文件并且包含json,这个时候还是先用csv的方法处理完比较好。