Python 2.7 Python:基于元组从字符串中删除元素

Python 2.7 Python:基于元组从字符串中删除元素,python-2.7,Python 2.7,类似的话题有很多,但我(在这个网站或其他地方)没有发现任何东西能回答我的问题。这是因为我想用for循环来实现这一点;不是通过导入诸如string之类的模块,也不是通过使用正则表达式等 我有一个元组,由一些我不喜欢的字符组成 然后根据这个元组检查一个字符串,如果这些禁止的字符是字符串中的元素,它们将被删除 get_rid_of_us = ('.', '"', '?', ' ') def fix_me(text): text = ''.join(text.split()) # removi

类似的话题有很多,但我(在这个网站或其他地方)没有发现任何东西能回答我的问题。这是因为我想用for循环来实现这一点;不是通过导入诸如
string
之类的模块,也不是通过使用正则表达式等

我有一个元组,由一些我不喜欢的字符组成

然后根据这个元组检查一个字符串,如果这些禁止的字符是字符串中的元素,它们将被删除

get_rid_of_us = ('.', '"', '?', ' ')

def fix_me(text):
    text = ''.join(text.split()) # removing whitespace
    text = text.lower() # making it lowercase
    for i in get_rid_of_us:
        if i in text:
            text = text.replace(i, '')
            return text
        else:
            return text

其中,
text
是用户从脚本中的其他位置输入的内容,随后将继续使用。我的
for
语句有问题-我遗漏了什么?谢谢:)

我不是用python编程的,所以我不会写确切的代码,但我可以解释这里的错误。您不需要else语句,应该从for循环中删除return语句。这样,您就可以在返回处理后的文本之前处理get_Reid_of_us的所有成员。return语句应该在循环完成之后出现。如果有任何不清楚的地方,请告诉我。

我不使用python编程,因此我不会编写确切的代码,但我可以解释这里的错误。您不需要else语句,应该从for循环中删除return语句。这样,您就可以在返回处理后的文本之前处理get_Reid_of_us的所有成员。return语句应该在循环完成之后出现。如果有任何不清楚的地方,请告诉我。

这里有一个演示,可能会根据StackOverflow的答案显示您想要什么

因此,您可以编写

def fix_me(text):
    text = ''.join(text.split()) # removing whitespace
    text = text.lower() # making it lowercase
    text = text.translate(None, "".join(get_rid_of_us))

下面的演示可能会根据StackOverflow的答案显示您想要什么

因此,您可以编写

def fix_me(text):
    text = ''.join(text.split()) # removing whitespace
    text = text.lower() # making it lowercase
    text = text.translate(None, "".join(get_rid_of_us))

在循环的第一次运行中,您将从函数返回。你也不需要其他部分

    get_rid_of_us = ('.', '"', '?', ' ')

    def fix_me(text):
        text = ''.join(text.split()) # removing whitespace
        text = text.lower() # making it lowercase
        for i in get_rid_of_us:
            if i in text:
                text = text.replace(i, '')
        return text
也可以使用内置函数来执行相同的操作

get_rid_of_us = ('.', '"', '?', ' ')

def fix_me(text):
    filter(lambda i: i not in get_rid_of_us,text)

在循环的第一次运行中,您将从函数返回。你也不需要其他部分

    get_rid_of_us = ('.', '"', '?', ' ')

    def fix_me(text):
        text = ''.join(text.split()) # removing whitespace
        text = text.lower() # making it lowercase
        for i in get_rid_of_us:
            if i in text:
                text = text.replace(i, '')
        return text
也可以使用内置函数来执行相同的操作

get_rid_of_us = ('.', '"', '?', ' ')

def fix_me(text):
    filter(lambda i: i not in get_rid_of_us,text)

返回您看到的确切错误或错误是什么?示例输入<代码>文本和所需输出是什么?@Legman啊,对不起,我没有说清楚。通过函数的字符串包含多个禁止元素(即
“foo,b.ar!”
)将看不到这些元素按预期被删除。@BoltzmannBrain如果输入为
“foo,b.ar!”
,函数的前两行将(正确地)将其更改为
“foo,b.ar!”
。但是在下一步,for循环将无法正确删除元组中指定的禁止字符。确切的错误或不正确返回您所看到的内容是什么?什么是示例输入
text
和所需的输出?@Legman啊,对不起,我没有说清楚。通过函数的字符串包含多个禁止元素(即
“foo,b.ar!”
)将看不到这些元素按预期被删除。@BoltzmannBrain如果输入为
“foo,b.ar!”
,函数的前两行将(正确地)将其更改为
“foo,b.ar!”
。但是在下一步,for循环将无法正确删除我的tuple.Clear as crystal中指定的禁止字符——感谢您的简单解释。正是我所需要的:)清晰如水晶——谢谢你的简单解释。正是我所需要的:)谢谢——我确实读过那个帖子,但我下定决心要用for循环完成它。你的建议可能更有效。干杯:)谢谢——我确实读过那个帖子,但我下定决心要用for循环完成它。你的建议可能更有效。干杯:)解决了我的问题,谢谢。特别高兴从你回答的第二部分学到另一种方法:)解决了我的问题,谢谢。特别高兴从您的答案的第二部分中了解到另一种方法:)