Python:在字符串字段中有条件地插入字符

Python:在字符串字段中有条件地插入字符,python,regex,pandas,Python,Regex,Pandas,在具有以下条件的字符串字段中有条件地插入字符的最佳方法是什么: 在左侧前3个数字字符后插入“.”(忽略字母) 如果后面没有其他字符,请不要添加“.” 96501 E0000 V909 965 变成 965.01 E000.0 V909 965 您可以使用((?:\D*\D){3})捕获前三位数字,使用(?=。+)断言后面至少还有一个字符,并使用back引用将添加到捕获的模式中: df[0].str.replace(r'^((?:\D*\d){3})(?=.+)', r'\1.') #0

在具有以下条件的字符串字段中有条件地插入字符的最佳方法是什么:

  • 在左侧前3个数字字符后插入“.”(忽略字母)
  • 如果后面没有其他字符,请不要添加“.”

    96501
    E0000
    V909
    965
    
    变成

    965.01
    E000.0
    V909
    965
    

  • 您可以使用
    ((?:\D*\D){3})
    捕获前三位数字,使用
    (?=。+)
    断言后面至少还有一个字符,并使用back引用将
    添加到捕获的模式中:

    df[0].str.replace(r'^((?:\D*\d){3})(?=.+)', r'\1.')
    #0    965.01
    #1    E000.0
    #2      V909
    #3       965
    #Name: 0, dtype: object
    

    谢谢你的快速回答!如果您不介意的话,从左边算字母和数字的版本是什么?如果同时算字母和数字,您可以使用
    ^((?:[^a-zA-Z0-9]*[a-zA-Z0-9]){3}(?=。+)