用python把下面所有步骤写成代码,用re,argparse,pandas。可以实现通过命令把txt文件的指定内容另存为CSV,生成的CSV文件自动命名并保存到当前文件夹。 弹出指定标题的曲线图 1.读取txt文件 2.遍历文档,先找到关键字ABCDE所在行数,然后保存从这一行到末尾的所有内容,删除重复内容的行,没有Header,另存为到到CSV。 3.将CSV中的文本内容,以空格为分隔符,进行分列 4.插入已经设置好的标题 5.根据标题和数据,生成曲线图。
时间: 2023-07-14 18:12:43 浏览: 78
自动拆分csv文件,并存储为utf-8格式的csv文件
以下是代码实现:
```python
import re
import argparse
import pandas as pd
import matplotlib.pyplot as plt
# 定义命令行参数
parser = argparse.ArgumentParser(description='Process txt file and generate CSV and plot.')
parser.add_argument('filename', type=str, help='the name of the txt file')
parser.add_argument('title', type=str, help='the title of the plot')
args = parser.parse_args()
# 读取txt文件
with open(args.filename, 'r') as f:
data = f.readlines()
# 找到关键字所在行数
start_index = None
for index, line in enumerate(data):
if re.search(r'ABCDE', line):
start_index = index
break
# 保存从关键字所在行到末尾的内容,删除重复行
csv_data = []
if start_index is not None:
for line in data[start_index:]:
if line not in csv_data:
csv_data.append(line)
# 另存为CSV文件,自动命名并保存到当前文件夹
df = pd.DataFrame(csv_data)
filename = args.filename.split('.')[0] + '.csv'
df.to_csv(filename, index=False, header=False)
# 读取CSV文件,进行分列并插入标题
df = pd.read_csv(filename, sep=' ', header=None)
column_names = ['Column1', 'Column2', 'Column3', 'Column4']
df.columns = column_names
# 生成曲线图
plt.plot(df['Column1'], df['Column2'])
plt.title(args.title)
plt.xlabel('Column1')
plt.ylabel('Column2')
plt.show()
else:
print('No keyword "ABCDE" found in the file.')
```
使用方法:
1. 将上述代码保存为一个.py文件,例如"txt_to_csv_and_plot.py"。
2. 打开命令行窗口,进入.py文件所在目录。
3. 输入命令:`python txt_to_csv_and_plot.py filename.txt "Plot Title"`,其中"filename.txt"为需要处理的txt文件名,"Plot Title"为生成的曲线图的标题。
4. 执行命令后,会自动将指定内容另存为CSV,并生成曲线图。
阅读全文