【发布时间】:2019-06-12 17:54:25
【问题描述】:
我正在编写一些 python 代码来替换 pandas DataFrame 中的一列字符串中的标点符号。替换后,我注意到测试存在“。”在结果字符串中总是返回 True。
我正在使用 Python 3.7,并在使用 PyCharm 时发现了这个细节。但是,我能够在 Jupyter Notebooks 中重现结果。
df = pd.DataFrame(['My string.'], columns=['Text'])
df['Text'] = df['Text'].str.replace('[^\w\s]', '')
print(df['Text'].str.contains('.'))
>>> 0 True
我希望 False 作为字符 '.'被替换为空字符串。字符串本身看起来已经删除了标点符号,但有趣的是,存在测试仍然返回 True。对其他标点符号重复此操作会返回预期值 False。谁能解释这是否是预期的行为?
提前致谢!
【问题讨论】:
-
string.replace 将找到确切的字符串
[^\w\s]并替换它,它不存在于数据框中,而且'[^\w\s]'看起来像正则表达式,你在尝试re.sub吗? -
.是一个正则表达式类,意思是“字面上的任何字符”,使用'\.'- 正则表达式转义字符