一维数据格式化及其处理
一维数据的表示
如果数据间有序,使用列表类型
for循环
无序使用集合
for循环
一维数据的存储
空格分隔,不换行
缺点 数据中不能有空格
逗号分隔
缺点不能有英文逗号
所以使用文章不会出现的特殊符号
一维数据的处理
存储文件>>>列表或者集合
存储文件<<<列表或者集合
复习.split方法
"""k jk ja ds f""".split() #按照空格切割
['k', 'jk', 'ja', 'ds', 'f']
"""k jk ja ds f""".split("j") #按照j切割
['k ', 'k ', 'a ds f']
可见split把字符串切割为若干个字符串组成列表,依据内部元素进行分割。
复习 .join方法对列表进行操作,转化为字符串
a=["sdf","sdfsd","sdfdsa"]
" ".join(a)
'sdf sdfsd sdfdsa'
a=["sdf","sdfsd","sdfdsa"]
k="&".join(a)
k
'sdf&sdfsd&sdfdsa'
k.split(&)==a
True
处理办法
读入 结果呈现为列表
从空格分隔文件中读入数据
txt=open(fanme).read()
ls=txt.split() """得到列表ls"""
f.close()
从特殊符号分隔的文件中读入数据(换了一种写法)
f=open("文件名") """f是类型是 _io.TextIOWrapper """
txt=f.read() """ txt类型是字符串 """
ls=txt.split("&") """ 字符串的split方法把 字符串 化为 列表"""
f.close() """_io.TextIOWrapper这个类型才能有open 和close功能,这里spyder提醒你了 """
写入 结果得到字符串
采用空格分隔方式写入
ls=["中国","美国","日本"]
f=open(fname,"w")
f.write(" ".join(ls)) """写入一个字符串"""
f.close()
从特殊符号分隔写入
ls=["中国","美国","日本"]
f=open(fname,"w")
f.write("$".join(ls))
f.close()
二维数据格式化及其处理
二维数据表示
用列表来表示,用两层for循环来表示
CSV数据存储格式
国际通用一二维数据存储格式.csv
没有空行,每行是一维数据,
缺失保留逗号,逗号与数据之间没有额外空格,包含逗号的,加引号或者转义符
二维数据的存储
按照行列存储都可以
一般的 列表按照先行后列,
二维数据的处理
读取
f=open("b.csv")
ls=[]
for i in f:
i=i.replace("\n","") #和print(i,end="")作用相似,去掉换行符
i=i.split(",")
ls.append(i)
f.close()
通过这个例子发现,csv文件的行(列)很重要,for i in f中,i就是f的每一行
换句话说行(列)是组成csv文件的基本单位,迭代单元
重温split方法,split(<某符号>)就是按照某符号划分
划分为列表,元素变为字符串以逗号分隔
写入
ls=[[],[],[]] #二维列表
f=open(fname,"w")
for item in ls:
f.write(",".join(item)+"\n")
f.close()
综合的例子
zs=[['第一行', '72', '7.69', '136.84'],
['第二行', '53', '1.75', '0'],
['第三行', '346', '4.87', '696.43']]
m=open("m.csv","w")
for i in zs:
a=",".join(i)+"\n"
m.write(a)
m.close()
m=open("m.csv","r")
zz=[]
for i in m:
i=i.replace("\n","")
i=i.split(",")
zz.append(i)
m.close()
二维数据逐一输出
zs=[['第一行', '72', '7.69', '136.84'],
['第二行', '53', '1.75', '0'],
['第三行', '346', '4.87', '696.43']]
for row in range(len(zs)):
for l in range(len(zs[0])): 这里写0因为他的元素个数都一样
print(zs[row][l])