首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Notepad++中垂直对齐逗号分隔的值?

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

Stack Overflow用户
提问于 2017-07-18 11:10:53
回答 4查看 119.9K关注 0票数 31

如下图“前面”所示,用逗号分隔的每一列都不对齐。是否有任何方法像Excel中的显示效果那样垂直对齐每一列?

我希望的效果显示在图片“之后”。

感谢@Martin,我可以像图片"Method_1“一样对齐文件。正如他所提到的,有些字符仍然不能很好地对齐。我想知道这种方法能不能得到改进?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-11-02 10:51:29

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

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

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

更新2019年:从SourceForge下载链接

票数 38
EN

Stack Overflow用户

发布于 2021-10-26 14:02:45

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

票数 10
EN

Stack Overflow用户

发布于 2018-11-28 23:47:25

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

设置:

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

CSVtoTable.py

代码语言:javascript
运行
复制
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. 在notepad++中打开CSV文件
  2. 点击插件->Python脚本->脚本->(您在步骤2中使用的名称)
  3. 应该打开一个带有格式化数据的新选项卡。

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

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

代码语言:javascript
运行
复制
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))
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45165105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档