【发布时间】:2020-07-20 00:22:57
【问题描述】:
有人可以向我解释一下'[{}]' 在下面的代码中做了什么吗?我知道代码是用于删除标点符号的,但为什么它必须是方括号内的大括号?
有什么规律吗?还有其他类似的约定或使用技巧吗?
df[colname] = df[colname].str.replace('[{}]'.format(string.punctuation), '')
如果我使用它会返回错误:
df[colname] = df[colname].apply(lambda x: x.replace(string.punctuation,'')
【问题讨论】:
-
您的用例是删除 pandas 数据框列中的所有标点符号?
-
x.replace(string.punctuation,'')将替换string.punctuation的整个,如果在x中连续找到。它不会替换任何单个标点符号。'[{}]'.format(string.punctuation)尝试创建匹配任何一个标点字符的正则表达式失败 - 它不起作用,因为其中一些字符需要转义才能在正则表达式中有意义。 -
{}是一种字符串格式。它被format函数中的值替换 -
是的,但我想我知道@bigbounty 出了什么问题
-
谢谢,我也注意到了。我在某些字符之前添加了反斜杠。现在我正在使用
df[column].apply(lambda x: re.sub(r'[!\"#$%&\'()*+,-.\/:;<=>?\@[\\]^_`{|}~]+', '', x)),它似乎有效?你能详细说明一下逃逸的事情吗?像什么字符需要它,它和我在特殊字符之前添加反斜杠一样吗?如果我想学习它,你会推荐一些关键字来搜索吗?非常感谢@jasonharper