我在第二列中有一个字符串,如下面的标签文件:
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
提前致谢。
答案 0 :(得分:3)
df.loc[df['y_pred'] == 1, 'CUSTOMER_NUMBER']
匹配字母,数字和\w
,这就是为什么它匹配超出您的需要。
您可以使用
修复它_
<强>详情
_[^\s_]+$
- 下划线_
- 除了空白和[^\s_]+
_
- 行尾允许您检测$
方案的子串的替代解决方案是
_[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