猿问

排除 ASCII 字符

我正在创建一个回文检查器,它可以工作,但是我需要找到一种方法来替换/删除给定输入中的标点符号。我正在尝试为 chr(i) i 在 32,47 范围内做,然后用 '' 替换那些。我需要排除的字符是 32 - 47。我尝试使用 String 模块,但我只能让它排除空格或标点符号,无论出于何种原因,它都不能同时包含。


我已经尝试过字符串模块,但无法同时删除空格和标点符号。


def is_palindrome_stack(string):

    s = ArrayStack()

    for character in string:

    s.push(character)


    reversed_string = ''

while not s.is_empty():

    reversed_string = reversed_string + s.pop()


if string == reversed_string:

    return True

else:

    return False



def remove_punctuation(text):

    return text.replace(" ",'')

    exclude = set(string.punctuation)

    return ''.join(ch for ch in text if ch not in exclude)


慕田峪9158850
浏览 142回答 2
2回答

有只小跳蛙

那是因为您从第一行的方法返回,在return text.replace(" ",''). 将其更改为text =  text.replace(" ", ""),它应该可以正常工作。此外,缩进可能在您的帖子中搞砸了,可能是在复制粘贴期间。完整的方法片段:def remove_punctuation(text):    text = text.replace(" ",'')    exclude = set(string.punctuation)    return ''.join(ch for ch in text if ch not in exclude)

森栏

您可以使用str以下方法删除不需要的字符:import stringtr = ''.maketrans('','',' '+string.punctuation)def remove_punctuation(text):    return text.translate(tr)txt = 'Point.Space Question?'output = remove_punctuation(txt)print(output)输出:PointSpaceQuestionmaketrans创建替换表,它接受 3 str-s:第一个和第二个必须等长,第一个的第 n 个字符将替换为第二个的第 n 个字符,第三个str是要删除的字符。您只需要删除(而不是替换)字符,因此前两个参数是空str的。
随时随地看视频慕课网APP

相关分类

Python
我要回答