添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
# 读取CSV文件并指定编码方式为latin-1 with open('input.csv', 'r', encoding='latin-1') as csv_file: csv_reader = csv.reader(csv_file) data = list(csv_reader) # 确定每列最长的长度 max_lengths = [max(len(row[i]) for row in data) for i in range(len(data[0]))] # 写入TXT文件并保持对齐 with open('output.txt', 'w', encoding='utf-8') as txt_file: for row in data: txt_file.write(' '.join(cell.ljust(max_lengths[i] + 2) for i, cell in enumerate(row)) + '\n')

小弟用上面这方法还是无法完整对齐。 :sob:

使用Pixie大佬的工具
cmder
VIctoryRoad大佬的指令

cat 源文件.csv | column -t -s "," > 目标文件.txt

可以再配合小弟的批次

@echo off
REM 提示用户输入 CSV 档案的完整路径
set /p csv_file=请输入CSV档案的完整路径(例如:C:\path\to\file.csv): 
REM 验证输入的 CSV 档案是否存在
if not exist "%csv_file%" (
    echo 错误:指定的档案不存在。
    pause
    exit /b
REM 获取 CSV 档案所在的目录路径
for %%F in ("%csv_file%") do (
    set "csv_dir=%%~dpF"
REM 提示用户输入输出的 TXT 档名
set /p txt_file=请输入输出的TXT档名(例如:output.txt): 
REM 构建输出的 TXT 档案的完整路径
set "txt_path=%csv_dir%%txt_file%"
REM 执行命令
type "%csv_file%" | column -t -s "," > "%txt_path%"
echo 操作已完成。结果已储存到 %txt_path%。
pause

就可以完成
CSV TO TXT 不对齐的问题

1	         2         	   3
11        22       	   33
111	     222   	       333
  • Ctrl + A 选中所有内容,然后按 Ctrl + C 复制
  • 打开记事本(notepad),按Ctrl + V 粘贴
  • 点击 文件→保存,保存 txt 文本文档,并将 “编码” 设置为 “UTF-8”
  • 另外稍微提一下马新简体和中国大陆简体之间的区别:

    ot1686:

    有没有辨法

    大陆简体中,“辦”对应的简体字是“办”。而“辨”字读biàn,常取辨别、分辨之意。

    “辨”和“办”都有异体字“辦”,但办、辨似乎不互通。

    ot1686:

    并支援UTF-8

    “支援”在大陆简体中的含义是给予帮助(give aid to someone)。如果您想表达 support/have the ability to achieve special function 这种含义,大陆简体字一般用“支持”。

    VSCode 的 Rainbow CSV 扩展有一个对齐特性: Align columns with spaces and Shrink (trim spaces from fields).

    打开 csv 文件后:

  • 点击状态栏的 Align 按钮即可对齐。
  • 点击状态栏的编码按钮即可以 UTF-8 保存当前文件。
  • def convert_csv_to_txt(input_file, output_file): # 使用chardet檢測檔案編碼 with open(input_file, 'rb') as f: rawdata = f.read() encoding = chardet.detect(rawdata)['encoding'] with open(input_file, 'r', encoding=encoding) as csv_file: csv_reader = csv.reader(csv_file) data = list(csv_reader) # 找到每個欄位的最大寬度 max_lengths = [max(len(row[i]) for row in data) for i in range(len(data[0]))] with open(output_file, 'w', encoding=encoding) as txt_file: for row in data: # 構建每一列的格式化字串,使用固定寬度的空格對齊每一欄 formatted_row = ' | '.join(cell.ljust(max_lengths[i]) for i, cell in enumerate(row)) txt_file.write(formatted_row + '\n') # 輸入檔案名稱 input_file = 'input.csv' output_file = 'output.txt' # 呼叫函式進行轉換 convert_csv_to_txt(input_file, output_file)

    大致上用notepad++可以解决问题但还不是很完美 :joy:

    for index, row in df.iterrows(): cell = row[col] length = sum(2 if ord(c) >= 0x4e00 and ord(c) <= 0x9fff else 1 for c in cell) if length > max_length: max_length = length lengths.append(max_length) # 按照第二步的数据,将每个单元格的内容右对齐 formatted_df = df.copy() for i, col in enumerate(formatted_df.columns): formatted_df[col] = formatted_df[col].apply(lambda x: x.rjust(lengths[i])) # 将格式化后的数据写入out.txt文件 formatted_df.to_csv('out.txt', index=False, header=True)

    手头没有电脑,用ai搓了一个,大体逻辑没问题,如果跑不了我晚上抽空改改再

    用python的pandas库帮我写一个程序,要求如下:
    1,读取一个本地的csv文件作为df数据,文件编码为latin-1
    2,将该数据库的所有单元格内容转换为文本格式
    3,分别计算每一列中的单元格内最长内容的长度(注意,每个汉字及中文标点记为2个字符长度,其他英文字符记为1个字符长度)
    3,按照第二步的数据,将每个单元格的内容右对齐
    4,以csv的格式输出该文件为out.txt

    a,b,c
    中英文 空格124,test,qq
    

    上面的csv将被格式化为

                  a,   b, c
    中英文 空格124,test,qq
    

    另,为何不使用几乎万能的pandas呢

    windows 不用安装 WSL 这么麻烦吧,下载个 git for windows 安装并添加到系统环境就可以用 cat 命令了
    https://git-scm.com/

    要想开箱即用的话,我建议下载个 cmder,它集成了 git,可以达到解压即用。请下载那个集成了的完全版,不要下那个 mini 版

    二位大佬完美解决问题,因为你们一个提供cmder,一个提供指令,小弟不知该给谁 “解决方式” :joy: