【问题标题】:Notepad++ rows to columns, in groupsNotepad++ 行到列,分组
【发布时间】:2018-02-08 16:46:44
【问题描述】:

我发现了很多方法可以在 Notepad++ 中将列转换为文本,反之亦然。但是,我苦苦挣扎的地方是我有一列有几行。我不能“只是”转置这些数据,因为数据的顺序错误。

例子:

RANK
COMPANY
GROWTH
REVENUE
INDUSTRY
1
Skillz
50,058.92%
$54.2m
Software
2
EnviroSolar Power
36,065.06%
$37.4m
Energy

当我转置这个时,我会得到:

RANKCOMPANYGROWTHREVENUEINDUSTRY 1Skillz50,058.92%$54.2mSoftware2EnviroSolar Power36,065.06%$37.4mEnergy

我需要将所有内容保持在组中,因此我总结了以下内容,并指出我还需要添加一个分隔符:

RANK|COMPANY|GROWTH|REVENUE|INDUSTRY
1|Skillz|50,058.92%|$54.2m|Software
2|EnviroSolar Power|36,065.06|$37.4m|Energy

正如您在 EnviroSolar Power 公司看到的那样,“EnviroSolar”和“Power”之间有一个空格,而我尝试过的任何东西最终都会删除在转置时应该保持完整的空格。

感谢您提供的任何帮助!提前谢谢!

【问题讨论】:

  • 你最好用你最喜欢的脚本语言写一个脚本。

标签: datatables notepad++ transpose


【解决方案1】:

假设您的行始终以整数开头(当然,标题行除外),此外,只有第一列包含整数,您可以通过两次搜索替换 (Ctrl+H).

一定要选择“正则表达式”搜索模式。

首先用管道替换所有换行符。现在这会将所有内容放在一行中。

查找内容:\n

替换为:|

下一步查找所有纯数字字段,并将它们作为一行的开头以达到所需的结果。

查找内容:\|([0-9]+)\|

替换为:\n$1|

【讨论】:

    【解决方案2】:

    如果您知道列数,实际上这里是 5,您可以分两步完成:

    第一:

    • Ctrl+H
    • 查找内容:(?:[^\r\n]+\R){5}
    • 替换为:$0\n
    • 全部替换

    说明:

    (?:             : start non capture group
        [^\r\n]+    : 1 or more any character but line break
        \R          : any kind of line break
    ){5}            : group must occurs 5 times, 
                      here you can give the columns number of your choice
    

    这将在 5 列之后添加一个换行符。

    • 检查正则表达式

    第二:

    • Ctrl+H
    • 查找内容:(\R)(?!\R)|(\R\R)
    • 替换为:(?1|:\n)
    • 全部替换

    说明:

    (\R)            : any kind of line break, in group 1
    (?!\R)          : negative lookahead, make sure we have not another linebreak after
    |               : OR
    (\R\R)          : 2 line break, in group 2
    

    替换:

    (?1             : conditional replacement, is group 1 existing
      |             : yes ==> a pipe
     :\n            : no ==> linebreak
    )               : end condition
    

    这将用管道替换单个换行符,用单个换行符替换 2 个连续换行符

    给定示例的结果:

    RANK|COMPANY|GROWTH|REVENUE|INDUSTRY
    1|Skillz|50,058.92%|$54.2m|Software
    2|EnviroSolar Power|36,065.06%|$37.4m|Energy
    

    【讨论】:

    • 为了获得所需结果的格式,您还需要通过正则表达式搜索 ^\| 并替换为空,从行首删除管道。
    • @BrianRiback:请随意将答案标记为已接受,请参阅:stackoverflow.com/help/someone-answers
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多