关于数据转换
将excel中的数据转为txt;
这是excel的数据:
1.所转换的txt文件的文件名取自excel的A列;
2.B、C、D列为txt的内容、C、D为不变值
3.每个txt文件有B、C、D三条数据内容,每条换行写入;
*如图:这是正确结果展示
对应的三行数据;一条一行、换行写入;
*code:
可以创建文件名对应的每个txt文件
*输出
遇到的问题:
都是写入的最后一条数据,for循环下 value 不能对应; 不知道怎么处理循环;
正确目标:
写入数据应该是文件一[A2]下对应数据一[B2];文件二[A3]下对应数据二[B3],以此类推。
目前我的思路:
已经获得文件名与数据信息的两个列表;已知二,三行信息是形同且不变的,如何通过列表索引属性,对应写入
*输出所有excel数据对应的txt;
伪代码(具体参数自行百度,*.csv 就是 记事本能读写的格式,改后缀为 *.txt 就是你想要的结果):
import pandas as pd
pd.read_excel()
pd.to_csv()
import pandas as pd
df = pd.read_excel("./1.xlsx")
print(df)
"""
文件名 数据1 数据2 数据3
0 a 123 456 789
1 b 101112 131415 161718
2 c 19 20 21
"""
# 方法1
# data_list = df.to_dict("records")
# print(data_list)
# for data in data_list:
# file_name = data['文件名'] + '.txt'
# tmp_data = [k + str(v) + '\n' for k, v in data.items() if k != '文件名']
# with open(file_name, 'w') as f:
# for i in tmp_data:
# f.write(i)
# 方法2
for PageNumber, data in df.iterrows():
data.to_csv(rf'./grid_{PageNumber}.csv')
把写入数据的参数'w' 换成 'a' , 因为'w'会覆盖前面的内容, 'a'是追加写入的意思
import os
def answer_create(path):
for file in os.listdir(path):
# print(file)
if os.path.splitext(file)[1] == ".jpg" or os.path.splitext(file)[1] == ".jpeg":
print(file)
answer_data = file
car_answer = answer_data.split('_')
print(len(car_answer))
print(car_answer[0])
print(car_answer[1])
print(car_answer[2])
print(car_answer[3])
print(car_answer[4].split('.')[1])
print(car_answer[5])
# other...
# 答案取值
finally_answer = car_answer[3]
# 类型
blue_data = "\n蓝\n"
green_data = "\n绿\n"
yellow_green_data = "\n黄绿\n"
yellow_data1 = "\n黄\n"
yellow_data2 = "\n黄\n"
white_data = "\n白1\n"
white_data2 = "\n白2\n"
white_data3 = "\n白3\n"
black_data = "\n黑\n"
green_data2 = "\n绿\n"
# 拼接答案txt
answer_file = file.split(".")[0] + ".txt"
print(answer_file)
answer_path = os.path.join("H:\\file", answer_file)
print(answer_path)
create_answer = open(answer_path, 'a')
# 写入answer
create_answer.write(finally_answer + green_data)
answer_create("H:\file")
print("----Complete----")