【问题标题】:how to understand curly brace inside square brackets in string format python code for removing punctuation如何以字符串格式理解方括号内的花括号python代码以删除标点符号
【发布时间】: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

标签: python string replace


【解决方案1】:

有人可以向我解释一下'[{}]' 在下面的代码中做了什么吗?我知道代码是用来删除标点符号的,但为什么它必须是方括号内的大括号?

您正在查看的代码段太小。要了解这里发生了什么,您需要查看此字符串的上下文以及它的使用方式:

'[{}]'.format(string.punctuation)

format() 函数定义了自己的mini-language 来解释字符串。在这种情况下,{} 是一个占位符,将被format() 的参数替换。 [] 只是文字字符。

我们可以在 Python REPL 会话中运行它来查看结果:

>>> import string
>>> '[{}]'.format(string.punctuation)
'[!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]'
>>>

根据您机器上的字符集和区域设置,您的确切输出可能会有所不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多