Notepad ++中的转置功能

时间:2013-11-18 10:21:42

标签: replace notepad++ transpose

我有一个文本文件:

0xC1,0x80,
0x63,0x00,
0x3F,0x80,
0x01,0xA0,

我希望输出为:

Line1: 0xC1,0x63,0x3F,0x01,
Line2: 0x80,0x00,0x80,0xA0,

如何使用Notepad ++中的替换功能?

4 个答案:

答案 0 :(得分:4)

  1. 使用框选择功能选择第二列文本。
    • 使用 Alt + Shift + Arraw键选择第二列。
  2. 将所选文本复制到新文件。
  3. 使用“查找/替换”删除所有换行符。
    • Ctrl + F 打开查找/替换对话框。
    • 选择 扩展 正则表达式 搜索模式。
    • 查找内容 框中输入 \ r \ n
    • 替换为 框保留为空白。
    • 点击 全部打开文档中的全部替换
    • 现在,文字以单行显示。
  4. 复制第二个文件中的文本并将其粘贴到第一个文件的第二行。
  5. 干杯...

答案 1 :(得分:3)

Notepad ++中没有用于转置矩阵的内置函数,你无法使用Replace(如M42指出)。另外,我不知道任何相关的插件。因此,您需要使用不同的编辑器或使用脚本执行此操作。我猜使用电子表格的最简单的解决方案,例如Excel或OpenOffice,它们都可以让您轻松转置表格。

但是,如果不离开Notepad ++,仍然有一个很好的选择。是使用Python Script插件。

设置Python脚本插件

  1. Python Scriptofficial website安装Plugin Manager插件。
  2. 安装后,转到Plugins > Python Script > New Script。选择新脚本的文件名(例如transpose.py)并复制后面的第一个代码块,然后将第二个代码块复制到另一个脚本,例如transpose_uneven.py
  3. 打开您的数据文件,然后运行Plugins > Python Script > Scripts > transpose.py。这将打开一个新的标签,其中包含您的数据转置。
  4. transpose.py

    delimiter=","
    newline="\n"
    content=editor.getText()
    matrix=[line.split(delimiter) for line in content.rstrip(newline).split(newline)]
    transposed=list(map(list, zip(*matrix)))
    notepad.new()
    for line in transposed:
        editor.addText(delimiter.join(line) + newline)
    if len(transposed)!=len(matrix[0]):
        console.clear()
        console.show()
        console.write("Warning: some rows are of uneven length. You might consider using the transpose_uneven script instead.")
    

    transpose_uneven.py

    import itertools    
    delimiter=","
    newline="\n"    
    content=editor.getText()
    matrix=[line.split(delimiter) for line in content.rstrip(newline).split(newline)]
    transposed=list(map(list, itertools.izip_longest(*matrix, fillvalue="")))
    notepad.new()
    for line in transposed:
        editor.addText(delimiter.join(line) + newline)
    

    实施例

    transpose.py脚本将转置以下示例:

    0xC1,0x80,
    0x63,0x00,
    0x3F,0x80,
    0x01,0xA0,
    

    要:

    0xC1,0x63,0x3F,0x01
    0x80,0x00,0x80,0xA0
    ,,,
    

    如果您的某些行不均匀:

    0xC1,0x80,
    0x63,0x00,
    0x3F,0x80,
    0x01,0xA0,
    0x02
    

    不均匀的列将被相应丢弃:

    0xC1,0x63,0x3F,0x01,0x02
    

    如果不需要,请使用transposed_uneven.py,它将返回:

    0xC1,0x63,0x3F,0x01,0x02
    0x80,0x00,0x80,0xA0,
    ,,,,
    

答案 2 :(得分:0)

如果你真的有这样一个固定的格式并且需要这样一个固定的输出,我通常会尝试使用即时宏。

所以我的光标位于文件的左上角,准备操作,我按下录制按钮(或在菜单栏中宏 - 开始录制)。

在特定情况下,请按:

  • 结束
  • 德尔
  • POS1

结束点击停止按钮(或菜单栏宏 - 停止录制)。

现在进行第一次测试,点击播放按钮(或菜单栏 Macro - Playback )并测试它是否有效。如果是,请单击宏 - 多次运行宏并选择运行直到文件末尾

答案 3 :(得分:0)

您可以使用以下快捷方式在记事本++中进行移调

 Step 1: Ctrl + A: selects all.
 Step 2: Ctrl + J: Transpose the Row you selected