如何在Notepad ++中垂直对齐逗号分隔值?

T X*_*T X 9 csv notepad++

如下面的图片" 之前 "中所示,用逗号分隔的每列不是对齐的.是否有任何方法可以像Excel中的显示效果一样垂直对齐每列?

我希望的效果显示在图片" After "中. 之前 后

感谢@Martin S,我可以像文件" Method_1 " 一样对齐文件.正如他所提到的,一些人物仍然不能很好地对齐.我想知道这种方法是否可以改进? Method_1

Ped*_*eis 19

您可以使用TextFX插件:编辑>排队多行...

注意:如果文件是只读的,则不起作用.

http://tomaslind.net/2016/02/18/how-to-align-columns-in-notepad/

  • 我的建议是使用另一个具有最新插件的工具,例如 VSCode (4认同)
  • 我试图在64位记事本++中使用TextFX,但收到一个错误消息,它是32位插件,不兼容。是否有64位版本? (2认同)
  • npp 64x 有什么替代品吗? (2认同)

BdR*_*BdR 19

也许不完全是您想要的,但我最近在 Notepad++ 中添加了一个CSV Lint 插件,它还为 csv 和固定宽度数据文件添加了语法突出显示,这意味着每一列都有不同的颜色,因此更容易查看。

CSV Lint 语法突出显示列

  • 救星!在没有 Excel 和 Notepad++ 插件的服务器上工作非常有用! (2认同)

Sta*_*uff 14

Notepad++CSVLint

  • 安装 CSVLint插件( Plugins>> Plugins Admin...)CSV Lint
  • 打开 CSV 文件。或者手动设置Language> CSVLint。这将为您提供漂亮的彩色输出。

在此输入图像描述

要重新格式化,请执行以下操作:

  • 打开下部窗格:Plugins>> CSV LintCSV Lint Window
  • 单击Reformat按钮。选中该框Align vertically (not recommended)。-- 这可能会弄乱您的数据,因此在单击“确定”之前请三思。

在此输入图像描述

重新格式化输出: 在此输入图像描述

仅供参考:您可以使用该Trim all values复选框重新格式化。

如果您想自己尝试一下:这是我的示例输入:

TIMESTAMP_START,TIMESTAMP_END,TA_ERA,TA_ERA_NIGHT,TA_ERA_NIGHT_SD,TA_ERA_DAY,DA_ERA_DAY_SD,SW_IN_ERA,HH,DD,WW-YY,SW_IN_F,HH
19890101,19890107,3.436,1.509,2.165,6.134,2.889,100.233,283.946,1.373,99.852,2.748,1.188
19890108,19890114,3.814,2.446,2.014,5.728,2.526,91.708,286.451,1.575,100,100.841,0.742
Run Code Online (Sandbox Code Playgroud)

Notepad++ 插件很脆弱。这对我有用Notepad++ v8.4.2 (32-bit)。因此,如果这对您不起作用,请考虑从 64 位切换到 32 位,并降级到这个确切的版本和位数。

相关: CSVLint 演示视频GitHub 上的 CSVLint 文档


zer*_*vin 6

您可以使用这个 python 插件脚本,它利用 csv 库处理引用的 csv 和许多其他变体。

设置:

  1. 使用 Notepad++ 中的插件管理器安装“Python 脚本”插件。
  2. Plugins->Python Script->New Script(将其命名为 CSVtoTable.py)
  3. 将以下 python 脚本粘贴到新文件中并保存:

CSV到表格.py

import csv

inputlines = editor.getText().split('\n')
# Get rid of empty lines
inputlines = [line.strip() for line in inputlines if line.strip()]
reader = csv.reader(inputlines, delimiter=',')
csvlist = [line for line in reader]
# transpose to calculate the column widths and create a format string which left aligns each row
t_csvlist = zip(*csvlist)
col_widths = [max([len(x) for x in t_csvlist[y]]) for y in range(len(t_csvlist))]
# To right align - change < to >
fmt_str = ' '.join(['{{:<{0}}}'.format(x) for x in col_widths]) + '\r\n'

text = []
for line in csvlist: 
    text.append(fmt_str.format(*line))

# open a new document and put the results in there.    
notepad.new()
editor.addText(''.join(text))
Run Code Online (Sandbox Code Playgroud)
  1. 在记事本++中打开您的CSV文件
  2. 点击 Plugins->Python Script->Scripts->(你在第 2 步中使用的名称)
  3. 应打开带有格式化数据的新选项卡。

更新(右对齐的数字和左对齐的字符串):

如果您想从 CSV 中右对齐数字字段,请使用以下 python 脚本 - 它查看 csv 的第二行以确定字段的类型。

import csv
import re

num_re = re.compile('[-\+]?\d+(\.\d+)?')

inputlines = editor.getText().split('\n')
# Get rid of empty lines
inputlines = [line.strip() for line in inputlines if line.strip()]
reader = csv.reader(inputlines, delimiter=',')
csvlist = [line for line in reader]

# Transpose to calculate the column widths and create a format string which left aligns each row
t_csvlist = zip(*csvlist)
col_widths = [max([len(x) for x in t_csvlist[y]]) for y in range(len(t_csvlist))]

# Numbers get right aligned
type_eval_line = csvlist[1 if len(csvlist)>1 else 0]
alignment = ['>' if num_re.match(item) else '<' for item in type_eval_line]

# Compute the format string
fmt_str = ' '.join(['{{:{0}{1}}}'.format(a,x) for x,a in zip(col_widths,alignment)]) + '\r\n'

text = []
for line in csvlist: 
    text.append(fmt_str.format(*line))

# open a new document and put the results in there.    
notepad.new()
editor.addText(''.join(text))
Run Code Online (Sandbox Code Playgroud)