Python 在Pandas中正则表达式匹配的开头添加一个字符
我有一个数据框,它有两列,Python 在Pandas中正则表达式匹配的开头添加一个字符,python,regex,pandas,regex-group,Python,Regex,Pandas,Regex Group,我有一个数据框,它有两列,id和text df = pd.DataFrame([[1, 'Hello world 28'], [2, 'Hi how are you 9'], [3, '19 Hello']], columns=['id','text']) id text 1 Hello world 28 2 Hi how are you 9 3 19 Hello 在文本字段中,每当有一个数字前面有空格时,我想在该数字前面添加一个#。我
id
和text
df = pd.DataFrame([[1, 'Hello world 28'], [2, 'Hi how are you 9'], [3, '19 Hello']], columns=['id','text'])
id text
1 Hello world 28
2 Hi how are you 9
3 19 Hello
在文本
字段中,每当有一个数字前面有空格时,我想在该数字前面添加一个#
。我正在寻找的结果数据帧如下所示:
id text
1 Hello world #28
2 Hi how are you #9
3 19 Hello
我尝试了以下方法来捕获正则表达式模式,并通过以下示例在数字之前添加#
字符:
但是,这会给出以下结果,它将整个数字替换为#
,而不是将其添加到正则表达式匹配的开头:
id text
1 Hello world #
2 Hi how are you #
3 19 Hello
关于如何在正则表达式匹配之前添加#
字符,有什么建议吗?谢谢 试试看
df['text'].replace(r"\s(\d{1,2})", r" #\1", regex=True)
i、 e.移动副词以包围数字部分,以捕获要反映在
\1
中的数字,并将替换字符串设置为原始r
以避开\1
中的斜杠(同时在\code>前面加一个空格)以防要保留原始空格,请使用两组:
df['text'].replace(r“(\s)(\d{1,2})”,r“\1#\2”,regex=True)
看
解释
--------------------------------------------------------------------------------
(组和捕获到\1:
--------------------------------------------------------------------------------
\s空格(\n、\r、\t、\f和“”)
--------------------------------------------------------------------------------
)结束\1
--------------------------------------------------------------------------------
(分组并捕获到\2:
--------------------------------------------------------------------------------
\d{1,2}位(0-9)(1到2次之间)
(匹配尽可能多的金额)
--------------------------------------------------------------------------------
)结束\2
注意df['text'].replace(r“(\s)(\d{1,2})”,r“\1#\2”,regex=True)
将保留原始空白。
df['text'].replace(r"\s(\d{1,2})", r" #\1", regex=True)