语句没有在python3中实现

2024-04-23 22:24:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试从字符串中删除标点符号和数值。我试过以下说法:

name_check = ''.join([letter for letter in name_check if letter not in string.punctuation or not letter.isdigit()])

当我将输入设为tom.alter99999时,它返回完全相同的值,而我希望将值设为tomalter。你知道吗

只要告诉我我需要在语句中更改什么,以便得到所需的输出。你知道吗


Tags: or字符串nameinforstringifcheck
3条回答

您使用了or条件,这意味着任何给定的字母不是punctuation或不是数字都是真的。你知道吗

将条件更改为and将起作用。你知道吗

name_check = ''.join([letter for letter in name_check
                      if letter not in string.punctuation
                      and not letter.isdigit()])

您还可以使用str.maketrans和音译字符串,将字符串中的所有标点和数字替换为零。你知道吗

import string

translator = str.maketrans('', '', string.punctuation + string.digits)

print('tom.alter99999'.translate(translator))

你需要and而不是or

name_check = ''.join([letter for letter in name_check if letter not in string.punctuation or not letter.isdigit()])

您可以使用re

import re
name='tom.alter99999'
res = re.findall(r'[a-zA-Z]',name)
print("".join(res))

相关问题 更多 >