一维数据格式化及其处理 一维数据的表示 如果数据间有序,使用列表类型 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(" ","") #和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)+" ") 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)+" " m.write(a) m.close() m=open("m.csv","r") zz=[] for i in m: i=i.replace(" ","") 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])