繁体   English   中英

Function 从具有多个分隔符的字符串中提取 substring - python

[英]Function to extract substring from a string with multiple delimiters - python

我有一个包含分隔符的字符串列,我想创建一个 function 以仅针对包含分隔符的字符串提取 substring

当前的

EMAIL               TITLE
johnson.k@abc.com   Marketing Analyst
linda.m@abc.com     501.Software Engineer.MG3 
kwami.k@abc.com     Product Researcher
george.w@abc.com    Managing Director
jessie.a@abc.com    64.Legal Consultant.I44
hiroda.t@abc.com    Hardware Analyst.

我想在“。”之间提取 substring。 delimiters 仅适用于带有分隔符的字符串。 否则,文本应保持不变。

EMAIL               TITLE                       NEW_TITLE
johnson.k@abc.com   Marketing Analyst           Marketing Analyst
linda.m@abc.com     501.Software Engineer.MG3   Software Engineer
kwami.k@abc.com     Product Researcher          Product Researcher
george.w@abc.com    Managing Director           Managing Director 
jessie.a@abc.com    64.Legal Consultant.I44     Legal Consultant
hiroda.t@abc.com    Hardware Analyst.           Hardware Analyst.

我尝试使用以下代码创建 function 但它似乎不起作用

def clean_title(text):
    match = re.search(r"\.(.*?)\.", text)
    if match:
        return match.group(1)
    else:
        return text

df['NEW_TITLE'] = df['TITLE'].apply(clean_title)

感谢任何形式的帮助,谢谢!

您可以使用替换方法:

df['NEW_TITLE'] = df['TITLE'].str.replace(r'^[^.]*\.([^.]+)\..*', r'\1', regex=True)

请参阅正则表达式演示 正则表达式匹配所有出现的

  • ^ - 字符串的开头
  • [^.]* - 零个或多个非点字符
  • \. - 一个点
  • ([^.]+) - 第 1 组:一个或多个非点字符
  • \. - 一个点
  • .* - 行的 rest (尽可能多的除换行符之外的任何零个或多个字符)

并替换为第 1 组值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM