如何在 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
广告