【Python数据处理系列】输入txt,读取特定字符转换成特定csv数据并输出
Python处理txt文件并输出csv文件
- 需求描述
- 代码实现
需求描述
输入:为txt文件,文件中有分块标识字符,并有数据字符,数据字符由“.”与“”组成,数据字符由特定坐标,读取特定字符“.”与""并转换成特定csv数据(0,1)并输出。
输出要求:输出csv文件共有4列。1列分块是分块标识,1列是x坐标,1列式y坐标,1列是数据值(0/1)
代码实现
'''这个代码是分割处理处理txt文本中的字符串,根据特定字符将txt文本分割,将'.'与'*'提取出来,其中'.'代表false=0,'*'代表True=1,并将结果输出给csv格式的表格的数据'''
import pandas as pd
import numpy as np
import re
#定义起始值,步长
x_start = 1000
x_step = 120y_start = 300
y_step = 30with open('D:\你的路径\你的文件名.txt','r') as f:#读入txt文件content = f.read()
blocks = re.split(r'\bDisplay Data Information\b',content,flags=re.IGNORECASE)
blocks = [b.strip() for b in blocks if b.strip()]
all_date = []
#逐个按块处理字符串,找到文件中‘.’‘*’的位置。
for block_idx,block in enumerate(blocks[1:]):ctm = block.split('\n')third_line = ctm[3].strip()ctms = third_line.split(':',1)[1].strip()lines = [line.strip() for line in block.split('\n') if re.findall(r'[.*]+', line)]y = y_startfor l in lines[5,16]:x_value = [x_start+ i* x_step for i, c in enumerate(l[12:39])]for x, char in zip(x_value, l[12:39]):all_date.append({'Selected Pin': ctms,'X(ps)':x,'Y(mv)':y,'Value' :1 if char =="*" else 0})y +=y_step
df = pd.DataFrame(all_date,columns=['SelectedPin','X(ps)','Y(mV)','Vaue'])
df.to_csv('D:\python_test/0514_picture.csv',index = False)