我试图匹配'-2.232.232'中第一个字符'.',使用这个正则表达式靠近正确:
^[^\.]*(\.)(?=.*\.)
但它匹配了“-2.”而不是“.”。
非常感谢您。
Series.str.replace
函数,并将参数 n
设置为 1
:import pandas as pd
df = pd.DataFrame({'Data':['-2.232.232']})
df['Data'].str.replace(r"\.(?=[^.]*\.)", "", n=1)
# => 0 -2232.232
在这里,
\.(?=[^.]*\.)
- 匹配一个点后面跟着零个或多个非点字符和一个点字符。n=1
- 设置替换的次数。 n=1
表示只替换一次。或者,您可以使用
>>> df['Data'].str.replace(r"^([^.]*)\.(?=[^.]*\.)", r"\1", n=1)
0 -2232.232
^([^.]*)
匹配并捕获除了.
以外的零个或多个字符,并将其放入第1组中,\1
指的是替换模式中的该值。
\.(?=[^.]*\.)
。这是哪种编程语言? - Wiktor Stribiżew