问题:
有一组类似如下的数据:
【【‘1‘,’2‘】,【】,【】,【】,【】】
需求:
想把这组数据写入txt
问题:
按照正常的txt写入方法尝试时候,再读取的时候无法读取出双列表形式,而是转为str
解决:
参考:(2条消息) python 将列表里面的内容写入到txt文件中_花开 流年的博客-CSDN博客_python将列表写入txt文件
u = [['mov', 'push', 'push', 'call', 'push', 'push', 'push', 'call'],['pop', 'push', 'call', 'pop', 'retn', 'mov', 'push', 'call', 'push'],['push', 'push', 'call', 'pop', 'call', 'pop', 'retn', 'mov', 'push'], ['lea', 'push', 'call', 'test', 'jnz', 'push', 'push']]
def text_save(filename, data): #filename为写入txt文件的路径,data为要写入数据列表.
file = open(filename,'a')
for i in range(len(data)):
s = str(data[i]).replace('[','').replace(']','') #去除[],这两行按数据不同,可以选择
s = s.replace("'",'').replace(',','') +'\n' #去除单引号,逗号,每行末尾追加换行符
file.write(s)
file.close()
print("保存文件成功")
text_save('N_aa.txt',u)
或者:
t=''
with open ('N_a.txt','w') as q:
for i in u:
for e in range(len(i)):
t=t+str(i[e])+' '
q.write(t.strip(' '))
q.write('\n')
t=''
结果:
a=[['1','9'],['2','5'],['3','3'],['2','4'],['4','3'],['1','8'],['1','9']]
t=''
with open ('N_a.txt','w') as q:
for i in a:
for e in range(len(a[0])):
t=t+str(i[e])+' '
q.write(t.strip(' '))
q.write('\n')
t=''
写在中间:
最终!储存正确的代码如下:
data=pd.read_csv(file)
list_1=【】
num=data.shape[1]
for i in range(num):
d=data[i].values.tolist() 循环第i列数据 变为列表
d_1=str(d).replace(" ' " ,' ') 去掉引号
list_data=[n for n in d_1.replace('[' , ' ').replace( ' ] ' , ' ').split(" , ") 去掉双括号
list_1.append(list_data) 添加到列表中
list_1最后模式:【【】,【】,【】,【】,【】,【】,【】......】
保存到txt:
with open(path + 'filename.txt' ,'w')as f:
for i in range (len(list_1)):
s= " ".join(list_1[i]) + "\n" 以空格为分隔符 分开数据,一列保存为一行,行尾加\n分隔符
f.write(s)
f.close()
txt:
1 2 3 4 5 6
4 5 6 7 8 9 保存为这种格式(数据用空格隔开)
打开:
def get_lines(file_name):
with open (file_name , "r") as f :
for line in f . readlines():
yeild line
l=[]
for line in get_lines(file_name):
word_list=line.strip().split()
l.append(word_list)
l_1=np.array(l)
ps:写入txt方法:
(1)
f=open(file_path,mode=' ')
f.write()
f.close()
(2)
with open(file_path,mode=' ') as f:
f.write()
f.close()
mode:
r : 读取文件,若文件不存在则会报错
w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件
a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾
rb,wb: 分别与r,w类似,但是用于读写二进制文件
r+ : 可读、可写,文件不存在也会报错,写操作时会覆盖
w+ : 可读,可写,文件不存在先创建,会覆盖
a+ : 可读、可写,文件不存在先创建,不会覆盖,追加在末尾
ps:读取方法 read readline readlines
read() 一次性读全部内容
一次性读取文本中全部的内容,以字符串的形式返回结果
readline() 读取第一行内容
只读取文本第一行的内容,以字符串的形式返回结果
readlines() 列表
读取文本所有内容,并且以数列的格式返回结果,一般配合for in使用
readlines会读到换行符,可用如下方法去除:
with open("test.txt", "r") as f:
for line in f.readlines():
line = line.strip('\n') #去掉列表中每一个元素的换行符
print(line)