此问题在此处已有答案:
re.sub(".*", ", "(replacement)", "text") doubles replacement on Python 3.7(2个答案)
Why do some regex engines match .* twice in a single input string?(1个回答)
16天前关闭
假设我有这个Pandas系列:
$ python3 -c 'import pandas as pd; print(pd.Series(["1","2","3","4"]))'
0 1
1 2
2 3
3 4
dtype: object
字符串
我想“ Package ”字符串“1”,“2”,“3”,“4”,使它们以“a”为前缀,以“B”为后缀->也就是说,我想得到“a1 B”,“a2 B”,“a3 B”,“a4 B”。所以我尝试https://pandas.pydata.org/docs/reference/api/pandas.Series.str.replace.html
$ python3 -c 'import pandas as pd; print(pd.Series(["1","2","3","4"]).str.replace("(.*)", r"a\1b", regex=True))'
0 a1bab
1 a2bab
2 a3bab
3 a4bab
dtype: object
型
所以-我确实把“1”“包裹”到“a1 b”->中,但是“ab”又重复了一次?
(在regex101.com中尝试这个正则表达式,我注意到如果启用了g
标志,我会在末尾得到“ab”的相同“ghost副本”;所以也许Pandas .str.replace
以某种方式启用了它?但是,根据文档,Pandas .str.replace
的默认值是flags=0
?!)
如何让列单元格的全部内容只“ Package ”在我想要的字符中?
2条答案
按热度按时间hjzp0vay1#
将
(.*)
更改为(.+)
:字符串
nhhxz33t2#
一个可能的解决方案:
字符串
输出量:
型