2017-08-30 24 views
-1

我发现了许多方法来将列转置为记事本++中的文本,反之亦然。但是,我挣扎的地方是我有一列有几行。由于数据错误顺序错误,我不能'只是'转换这些数据。记事本+ ++行到列,组

例子:

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动力看,之间有一个空格“EnviroSolar”和“Power”以及我尝试过的任何东西都会消除在移调时应该保持机智的空间。

我非常感谢您提供的任何帮助!先谢谢你!

+1

你最好在你最喜欢的脚本语言编写一个脚本。 – Toto

回答

0

假设你的行总是以整数(除了当然的标题行),并进一步启动,只有第一列包含整数,你可以做这样做有两个搜索替换(按Ctrl + ^h)。

务必选择“正则表达式”搜索模式。

首先与管道全部更换换行。这会把所有东西都放在一条线上。

查找内容:\n

替换:|

下一页找到所有纯数字领域,使他们开始线达到期望的结果。

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

替换为:\n$1|

0

如果你知道的列数,其实这里是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 
+0

为了获得所需结果的格式,您还需要通过正则表达式搜索“^ \ |'并从中删除管道,并且不进行任何替换。 – Bananaapple

+0

@Bananaapple:确实,已编辑。 – Toto

+0

非常感谢! –