用python把下面所有步骤写成代码,用re,argparse,pandas。可以实现通过命令把txt文件的指定内容另存为CSV,生成的CSV文件自动命名并保存到当前文件夹。 一共有100个标题,弹出指定标题的曲线图 1.读取txt文件 2.遍历文档,先找到关键字ABCDE所在行数,然后保存从这一行到末尾的所有内容,删除重复内容的行,没有Header,另存为到到CSV。 3.将CSV中的文本内容,以空格为分隔符,进行分列 4.插入已经设置好的标题 5.根据标题和数据,生成曲线图。
时间: 2023-07-14 22:12:41 浏览: 80
以下是实现上述功能的代码:
```python
import re
import argparse
import pandas as pd
import matplotlib.pyplot as plt
# 定义命令行参数
parser = argparse.ArgumentParser(description='Process txt file and generate CSV')
parser.add_argument('filename', type=str, help='txt file name')
parser.add_argument('title', type=str, help='title of the chart to be plotted')
args = parser.parse_args()
# 读取文件
with open(args.filename, 'r') as f:
content = f.readlines()
# 查找关键字所在行数
for i, line in enumerate(content):
if re.search(r'ABCDE', line):
start_index = i
break
# 获取从关键字行开始到末尾的所有内容
data = content[start_index:]
# 删除重复行
data = list(set(data))
# 将数据保存到CSV文件中,文件名为“原文件名_processed.csv”
csv_filename = args.filename.split('.')[0] + '_processed.csv'
with open(csv_filename, 'w') as f:
for line in data:
f.write(line)
# 读取CSV文件,以空格为分隔符进行分列
df = pd.read_csv(csv_filename, delimiter=' ', header=None, names=['col{}'.format(i) for i in range(1, 101)])
# 插入标题
df.insert(0, 'title', ['Title{}'.format(i) for i in range(1, 101)])
# 生成曲线图
plt.plot(df['title'], df[args.title])
plt.title(args.title)
plt.xlabel('Title')
plt.ylabel('Data')
plt.show()
```
使用方法:
1. 将上述代码保存为一个 Python 文件(例如 process_txt.py)。
2. 在终端中运行命令 `python process_txt.py filename.txt title`,其中 filename.txt 是要处理的 txt 文件名,title 是要绘制曲线图的标题名。
3. 程序会生成一个名为 filename_processed.csv 的 CSV 文件,保存处理后的数据。同时,会弹出一个曲线图,显示指定标题的数据曲线。
阅读全文