python_520_2022 发表于 2022-10-16 19:20:57

Python读取Excel数据整体写入ASCII文本文件

本帖最后由 python_520_2022 于 2022-10-16 20:32 编辑

用Python读取Excel 的xlsx数据整体写入ASCII文本文件
写入后,ASCII文本文件中有多余的None,单引号,中括号

主要希望通过此写入,下次不同的Excel数据文件用Python自动转换为ASCII文本文件,用其他阅读器更方便阅读

各位大神帮忙看看,如何把Excel数据(包括字符串和float数据)写入.ascii文本文件,期望在ASCII数据是对齐的,希望的效果为如截图,具体参考手动复制出来的参考文件

python_520_2022 发表于 2022-10-16 20:38:29

大神们帮忙看看,python生成的ASCII文件 和 手动复制的ASCII文件一样就行

Brick_Porter 发表于 2022-10-16 21:46:59

我想进一步问问

1. 你的意思是把excel文件中的所有单元格数据读取出来然后写入一个纯文本文件中对吗?

2. 我在你提供的input.ascii文件中并没有看到所谓的“多余的None,单引号、中括号”这些符号,可以说说你在什么情况下看到这些符号的吗?

Brick_Porter 发表于 2022-10-16 22:11:28

python_520_2022 发表于 2022-10-16 20:38
大神们帮忙看看,python生成的ASCII文件 和 手动复制的ASCII文件一样就行

我按照自己的理解写了一份代码,你看看行不行,需要用到一个名为openpyxl的第三方库:
from pathlib import Path

from openpyxl import load_workbook

input_file = 'input.xlsx'
output_file = Path(input_file).stem + '.ascii'# 根据excel文件自动生成输出文件名

wb = load_workbook(input_file)
ws = wb.active

with open(output_file, 'w', encoding='utf-8') as f:
    for row in ws.values:# 按行遍历工作表中的所有值
      temp = []# 每一行的值写入临时列表temp中
      for v in row:
            if v is not None:# 如果某个单元格不为空就把值转为字符串并存入temp中
                temp.append(str(v))
      line = '\t'.join(temp) + '\n'# 使用制表符对齐每个单元格的数据,然后在行尾加上换行符
      f.write(line)# 把一行数据写入文本文件中

wb.close()
如有不理解的请看注释语句或者留言

安装openpyxl的命令:
pip install openpyxl -i https://pypi.doubanio.com/simple --no-cache-dir--no-cache-dir这个参数表示不保留缓存,可加可不加

阿奇_o 发表于 2022-10-16 22:45:33

居然可以 4 行代码 就搞定了。。 看看是不是你想要的。
import pandas as pd
df = pd.read_excel('input.xlsx', sheet_name='input')
df.columns = df.columns.tolist()[:4] + ['','']
df.to_csv('output_fixed_2.ascii', index=False, sep='\t', encoding='ascii')

# 可用 git diff 对比查看,是否完全一样
# git diff input.ascii output_fixed_2.ascii

^_

cflying 发表于 2022-10-16 22:51:34

从excel里读取后,一行一行写入即可,看了下,你那个对其应该是靠中间的ascii里的一个定位符来进行间隔的,所以从读取的每行数据里,每个元素后跟一个chr(9)写入即可,最后每行再加一个换行符即可

python_520_2022 发表于 2022-10-27 10:06:01

Brick_Porter 发表于 2022-10-16 22:11
我按照自己的理解写了一份代码,你看看行不行,需要用到一个名为openpyxl的第三方库:

如有不理解的请 ...

谢谢详细的解答,您这个方法很实用

python_520_2022 发表于 2022-10-27 10:06:35

阿奇_o 发表于 2022-10-16 22:45
居然可以 4 行代码 就搞定了。。 看看是不是你想要的。

^_

谢谢,专业,简洁
页: [1]
查看完整版本: Python读取Excel数据整体写入ASCII文本文件