目标:我只想在字符串中打印字母
#Input
#======
string = ' 529Wind3@. '
#Neededoutput
#============
'Wind'
我尝试使用以下代码对此进行编码
import re
string=re.sub('[^a-z]+[^A-Z]',' ',string)
print(string)
我得到的输出是
ind
但此代码仅适用于小写 你能告诉我如何为大写和小写编写代码吗
尝试使用列表推导来检查每个字符是否在string.ascii_letters
中,如果是,它将被存储:
import string
String = ' 529Wind3@. '
print(''.join([i for i in String if i in string.ascii_letters]))
输出:
Wind
我同意 @U8-Forward 的观点,但我想你可能也想知道为什么你的正则表达式不起作用。这
[^a-z]+[^A-Z]
不做你想要的,因为W
匹配[^a-z]+
,所以被删除。
将所有不需要的字符放在一个字符类中:
[^a-zA-Z]+
你需要写[^a-zA-Z]
而不是[^a-z]+[^A-Z]
。+
运算符用于检测重复字符,而不是组合多个条件。
根据您的要求尝试以下代码:
import re
string=re.sub('[^a-zA-Z]',' ',string)
print(string)
你可以使用 re.findall
import re
String = ' 529Wind3@. '
string = re.findall('[a-zA-Z]+', String)
print(''.join(string))
print re.sub('[^a-zA-Z]','',string)