如何在Python中去除字符串中的所有标点符号?


去除Python字符串中所有标点符号可以使用多种方法。以下是一些示例

使用string.punctuation

示例

string.punctuation常量包含所有ASCII标点符号。我们可以使用此常量来去除字符串中的所有标点符号。

我们使用列表推导式迭代字符串中的每个字符,并检查它是否不在string.punctuation常量中。如果它不是标点符号,我们将其添加到no_punct变量中。

import string
# sample string with punctuation
text = "Lorem, Ipsum!!!"
# remove punctuation
no_punct = "".join(char for char in text if char not in string.punctuation)
print(no_punct)

输出

Lorem Ipsum

使用正则表达式

我们也可以使用正则表达式来去除字符串中的所有标点符号。

示例

我们使用re.sub()方法将所有非单词字符和非空格字符替换为空字符串。

import re

# sample string with punctuation
text = "Lorem, Dolor!!!"

# remove punctuation using regular expression
no_punct = re.sub(r'[^\w\s]', '', text)

print(no_punct)

输出

Lorem Dolor

使用translate()

translate()方法也可以用于去除字符串中的标点符号。

示例

我们使用str.maketrans()方法创建一个转换表,并将其传递给translate()方法以去除字符串中表中的所有字符。

import string
# sample string with punctuation
text = "Lorem, Ipsum!!!"
# create a translation table
table = str.maketrans('', '', string.punctuation)
# remove punctuation
no_punct = text.translate(table)
print(no_punct)

输出

Lorem Ipsum

以下是如何在Python中去除字符串中所有标点符号的更多示例

使用循环迭代字符

我们还可以循环遍历字符串中的每个字符并去除任何标点符号。

示例

我们循环遍历字符串中的每个字符,并检查它是否是字母数字字符(字母或数字)或空格字符。如果是,我们将其添加到no_punct变量中。这样,我们就可以从结果字符串中排除任何标点符号。

# sample string with punctuation
text = "Foo, Bar!!!"
# remove punctuation using a loop
no_punct = ""
for char in text:
    if char.isalnum() or char.isspace():
        no_punct += char
print(no_punct)

输出

Foo Bar

使用replace()方法

我们还可以使用replace()方法去除字符串中的所有标点符号。

示例

我们使用replace()方法将每个标点符号(句点、逗号、感叹号和问号)替换为空字符串。这样,我们就可以去除字符串中的所有标点符号。

# sample string with punctuation
text = "Fubar, Quz!!!"
# remove punctuation using the replace() method
no_punct = text.replace(".", "").replace(",", "").replace("!", "").replace("?", "")
print(no_punct)

输出

Fubar Quz

使用re模块和标点符号列表

我们还可以使用re模块和标点符号列表来去除字符串中的所有标点符号。

示例

我们使用re.sub()方法替换所有不是字母、数字或空格的字符为空字符串。正则表达式[^a−zA−Z0−9\s]+匹配任何不是字母、数字或空格的字符。

import re
# sample string with punctuation
text = "Foobar, Baz?"
# remove punctuation using the re module and a list of punctuation characters
no_punct = re.sub('[^a-zA-Z0-9\s]+', '', text)
print(no_punct)

输出

Foobar Baz

更新于:2023年8月11日

1K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告