我正在处理一个包含计算机名的数据框,我正在尝试匿名化计算机名。这是我正在使用的数据帧的一个示例
df = pd.DataFrame({'id': [1, 2, 3, 4, 5], 'computer_name': [u'LENOVO 09 X32H0GB', u'LENOVO vmhsbpmh613.xyz.biz', u'Dell Inc. PowerEdge R910 XKF2S75', u'HP ppesfesxb203.corp.123.com', 'IBM SoftLayer 13 L89P4567']})
以下是匿名化的要求
从右侧第一个空格后的右侧拾取第一组字符串。。 例如:“联想vmhsbpmh613.xyz.biz”应该是“vmhsbpmh613.xyz.biz”
从右侧获取第一组字符串(如“vmhsbpmh613.xyz.biz”)后,删除第一个点(.)中的所有字符,这将给出“vmhsbpmh613”,如果没有点(.),则只保留最后一组字符串,请注意,从右侧第一组字符串中仅删除点(.)之后的字符串非常重要,否则,如本例中的“Dell Inc.PowerEdge R910 XKF2S75”,将导致删除Dot“Dell Inc.”之后的所有内容
最后,用xxx替换前3个字符,如xxxsbpmh613
下面是输出的样子
df = pd.DataFrame({'id': [1, 2, 3, 4, 5], 'computer_name': [u'LENOVO 09 xxxH0GB', u'LENOVO xxxsbpmh613', u'Dell Inc. PowerEdge R910 xxx2S75', u'HP xxxsfesxb203', 'IBM SoftLayer 13 xxxP4567']})
我希望,我能够清楚地表达需求,谢谢
第一个^{} 从右侧开始在第一个空格上拆分:
然后^{} 在第一个点上^{} 在前3个字符上
xxx
:并通过重新组合拆分来完成:
^{}
正则表达式详细信息
\S{3}
:与任何非空白字符外部匹配3
次李>(\S+?)
:捕获组匹配1到无限次之间的任何非空白字符,但匹配次数尽可能少(惰性匹配)(?:
:非捕获组的开始\.
:匹配.
字符\S+
:匹配任何非空白字符$
:断言行末尾的位置)
:结束非捕获组见^{}
这听起来像是正则表达式的工作。以下是一些选项:
相关问题 更多 >
编程相关推荐