📅  最后修改于: 2023-12-03 15:19:28.221000             🧑  作者: Mango
在Python中,可以使用列表理解和ord()
函数来删除字符串中的非字母字符。
列表理解可以快速简洁地生成列表,它由一对方括号和一个表达式组成。例如,以下代码段将生成一个包含1到10的整数列表:
my_list = [i for i in range(1, 11)]
可以在表达式中使用条件语句或循环语句来限制或改变生成的列表。例如,以下代码段将生成一个包含1到10之间的所有奇数的列表:
my_list = [i for i in range(1, 11) if i % 2 != 0]
利用列表理解和ord()
函数,可以将一个字符串中的所有非字母字符删除,并生成一个新的字符串。
my_string = "Hello! My name is Python."
new_string = ''.join([char for char in my_string if ord(char) in range(65, 91) or ord(char) in range(97, 123)])
以上代码首先使用了一个条件语句(ord(char) in range(65, 91) or ord(char) in range(97, 123)
)来判断字符char
是否为字母。当ord(char)
在65到90(大写字母)或97到122(小写字母)之间时,char
即为字母。然后,使用列表理解将符合条件的字符拼接起来,生成一个新字符串。
另一种删除字符串中非字母字符的方法是使用正则表达式。Python中的re
模块提供了处理正则表达式的工具,并且速度比列表理解更快。
import re
my_string = "Hello! My name is Python."
new_string = re.sub('[^a-zA-Z]', '', my_string)
以上代码使用了re.sub()
函数将非字母字符替换为空字符串。在正则表达式[^a-zA-Z]
中,“^
”表示“非”,“a-zA-Z
”表示所有字母(大写和小写)。因此,该正则表达式将匹配除字母外的所有字符。函数re.sub()
第二个参数为空字符串,则将所有匹配到的字符替换为空字符串。