读取含字母与数字的文件遇阻:提取数字及十进制分隔符转换求助
处理带逗号十进制分隔符的数据文件并绘图
下面是针对需求的具体实现步骤:
1. 读取并筛选数据行
先读取文件内容,跳过表头和末尾的非数据文本,只保留中间双空格分隔的数字行:
with open('你的文件名.txt', 'r', encoding='utf-8') as file: all_lines = file.readlines() # 筛选出仅包含数字、逗号和双空格的行(可根据实际文件调整判断逻辑) data_rows = [] for line in all_lines: clean_line = line.strip() if ' ' in clean_line and all(char in '0123456789, ' for char in clean_line): data_rows.append(clean_line)
2. 转换十进制分隔符并提取数字
把每行里的逗号替换成Python识别的句点,再拆分出数字并转为浮点型:
processed_numbers = [] for row in data_rows: # 替换逗号为句点 converted_row = row.replace(',', '.') # 按双空格拆分,过滤空值后转成float nums = [float(num) for num in converted_row.split(' ') if num] processed_numbers.append(nums)
3. 数据绘图示例(用matplotlib)
处理好的数字可以直接用于绘图,这里以matplotlib为例:
import matplotlib.pyplot as plt # 假设每行数据是X和Y两列,按需调整 x_values = [row[0] for row in processed_numbers] y_values = [row[1] for row in processed_numbers] plt.plot(x_values, y_values, marker='o') plt.xlabel('X轴标签') plt.ylabel('Y轴标签') plt.title('数据可视化图') plt.grid(True) plt.show()
补充说明
- 如果表头/末尾文本的筛选逻辑不适用,可直接通过行数范围选取数据(比如
data_rows = all_lines[2:-3],表示取第3行到倒数第4行)。 - 若文件编码不是utf-8,修改
open函数的encoding参数(比如encoding='gbk')。
内容的提问来源于stack exchange,提问作者Samuel
相关产品推荐
相关产品推荐

