字符串在记事本++中以二分隔符分割

时间:2018-01-26 10:52:19

标签: regex

我在第二列中有一个字符串,如下面的标签文件:

Apple  Fruit_00001_gxw@1983
Peach  Fruit_00002_gxw@1968
Berry  Fruit_00003_f@1973

我尝试使用正则表达式

替换Notepad ++
  

\ _ \ W +。什么都没有

这里它也将_00001视为一个词。我误判了,它会被视为数字。如何将其修改为在第二个分隔符处拆分?所以输出是,

Apple  Fruit_00001
Peach  Fruit_00002
Berry  Fruit_00003

提前致谢。

2 个答案:

答案 0 :(得分:3)

df.loc[df['y_pred'] == 1, 'CUSTOMER_NUMBER'] 匹配字母,数字和\w,这就是为什么它匹配超出您的需要。

您可以使用

修复它
_

<强>详情

  • _[^\s_]+$ - 下划线
  • _ - 除了空白和[^\s_]+
  • 之外的1个字符
  • _ - 行尾

enter image description here

允许您检测$方案的子串的替代解决方案是

_[letters]@[digits]

匹配_\pL+@\d+ ,然后是1个字母,_,然后是1个数字。

答案 1 :(得分:1)

关注awk可能对您有帮助。

解决方案第一: gensub中使用awk

awk '{print gensub(/([^_]*)_([^_]*)(.*)/,"\\1_\\2",1)}'  Input_file

输出如下。

Apple  Fruit_00001
Peach  Fruit_00002
Berry  Fruit_00003

解决方案第二: 根据OP,因为第二列的长度是固定的,所以通过长度副解决方案。

awk '{print $1,substr($2,1,11)}'   Input_file