csv 如何在记事本++中垂直对齐逗号分隔值?

fslejnso  于 2023-02-01  发布在  其他
关注(0)|答案(5)|浏览(338)

如下图“* 前 *”所示,逗号分隔的各列没有整齐对齐,有没有办法像Excel中的显示效果一样,使各列垂直对齐?
我想要的效果如图片“After"所示。x1c 0d1xx 1c 1d 1x
感谢@Martin S,我可以像图片“Method_1"一样对齐文件。正如他所提到的,有些字符仍然不能很好地对齐。我想知道这个方法是否可以改进?

juzqafwq

juzqafwq1#

您可以使用TextFX插件:

  • TextFX〉TextFX编辑〉将多行对齐...

    • 注意:**如果文件是只读的,则此操作无效。

http://tomaslind.net/2016/02/18/how-to-align-columns-in-notepad/
2019年更新:Download link from SourceForge

wgxvkvu9

wgxvkvu92#

也许不完全是你想要的,但是我最近在记事本++中添加了一个CSV Lint plug-in,它还为csv和固定宽度的数据文件添加了语法突出显示,这意味着每一列都有不同的颜色,所以更容易看到。

8ehkhllq

8ehkhllq3#

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

设置:

1.使用记事本++中的插件管理器安装"Python脚本"插件。
1.插件-〉Python脚本-〉新建脚本(名称类似于www.example.com) CSVtoTable.py )
1.将以下python脚本粘贴到新文件中并保存:
CSVtoTable.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))

1.在记事本中打开CSV文件++
1.点击插件-〉Python脚本-〉脚本-〉(您在步骤2中使用的名称)
1.应打开包含格式化数据的新选项卡。

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

如果您想右对齐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))
tag5nh1u

tag5nh1u4#

您可以使用“搜索和替换”将所有出现的,更改为,\t。这将在每个,后添加一个选项卡。
然而,该方法具有一些缺点:
1.您可以有效地将空白字符添加到文档中(以防需要编辑和保存它)。
1.仅当最长和最短数字之间的差异(就字符数而言)小于1个制表符大小(通常为4个字符)时,此操作才能正常工作。

wpx232ag

wpx232ag5#

记事本++ CSVLint

  • 安装CSVLint插件
  • 打开CSV文件。或者手动设置语言〉CSVLint。这将给予你漂亮的彩色输出。

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

  • 打开下方窗格:插件〉CSV Lint〉CSV Lint窗口。
  • 点击重新格式化按钮。选中垂直对齐框(不推荐)。--这可能会搞砸你的数据,所以在点击确定之前要三思。

重新格式化输出:

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

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

相关问题