【发布时间】:2021-05-02 16:49:37
【问题描述】:
我有一对列,如下所示:
x = ["a b williams", "e g", "z z specialists"]
y = ["j j winston", "hb d party supplies", "t t ice cream"]
df = pd.DataFrame(x,y)
我希望能够使用re.sub 删除两个单个字符之间的空格。我尝试了以下方法:
re.sub("(?<=\\w\\b)"\\s"(?=\\w\\b)", "", df)
但是,当我运行代码时,出现以下错误。
SyntaxError: unexpected character after line continuation character
我不确定自己做错了什么。期望的结果是:
jj winston ab williams
hb d party supplies eg
tt ice cream zz specialists
请指教。任何建议表示赞赏。
【问题讨论】:
-
"(?<=\\w\\b)"\\s"(?=\\w\\b)"语法无效。 -
那是
df的例子代表吗?您真的要在索引中替换吗?正则表达式相当简单,你可以使用r'(?<=\b[^\W\d_])\s(?=[^\W\d_]\b)'。或者,如果您真的想将数字和下划线视为单词,r'(?<=\b\w)\s(?=\w\b)' -
@WiktorStribiżew 我不确定你对索引的意思
-
我的意思是,
df.replace(regex_here,'', regex=True)不会在索引列中替换。好的,re.sub(r'(?<=\b[^\W\d_])\s(?=[^\W\d_]\b)','', text)对你有用吗?请注意,您不能将df作为输入参数传递给re.sub,它必须是一个字符串。这就是为什么我要询问您数据的真实结构。 -
@TigerhawkT3 您不能将数据帧作为输入传递给
re.sub。
标签: python regex pandas regex-lookarounds re