从 Python 中的字符串中删除特定字符
在 Python 中处理字符串时,您可能需要删除特定字符。最常见的方法是使用replace() 方法。然而,不幸的是,下面的代码似乎没有删除任何字符:
for char in line: if char in " ?.!/;:": line.replace(char,'')
此代码的问题是replace()方法不会就地修改字符串。要正确替换字符,您需要将replace()方法的结果重新分配回line变量:
for char in " ?.!/;:": line = line.replace(char,'')
或者,您可以使用更简洁和高效的方法:
import string line = line.translate(string.maketrans('', ''), '!@#$')
translate() 方法将翻译表作为其第二个参数。翻译表是一个字符串,其中每个字符代表要删除的相应字符。在本例中,翻译表包含四个字符:“!”、“@”、“#”和“$”。行中与这些字符之一匹配的任何字符都将被删除。
另一种选择是使用正则表达式:
import re line = re.sub('[!@#$]', '', line)
sub() 方法将正则表达式模式作为第一个争论。括号中的模式指定要删除的字符。第二个参数是用于替换匹配字符的字符串。在这种情况下,空字符串用于有效删除字符。
对于 Python 3,字符串表示为 Unicode,并且需要稍微不同的方法:
unicode_line = unicode_line.translate({ord(c): None for c in '!@#$'})
此代码创建一个翻译表,其中列表中的每个字符都映射为 None,表示应将其删除。
以上是如何在Python中高效地删除字符串中的特定字符?的详细内容。更多信息请关注PHP中文网其他相关文章!