微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Python中无需大写字母即可打印的函数

如何解决在Python中无需大写字母即可打印的函数

我正在尝试编写一个简单的函数,该函数接受一个字符串并返回一个字符串,而该字符串不包含原始字符串中的大写字母。我看过许多其他帖子,它们的问题与我的相似,但是其中大多数都是由于缺乏知识而无法理解的技能水平。

这是我想出的。

def no_capitals(string):
    result = []
    for char in string:
        if not char.isupper(): result.append(char)
    return (result)

print(no_capitals("X007XK"))
print(no_capitals("Xmen R cute"))

所需的输出将是:

007
men cute

但是,毫不奇怪,此函数以列表形式返回。

['0','0','7'] 
['m','e','n','c','u','t,'e']

所以我想我将不得不以不同的方式来解决这个问题。我对Python的了解非常有限,因此我没有很多可使用的“工具”。有人能指出我正确的方向吗?

解决方法

您可以使用''.join()

def no_capitals(string):
    return ''.join(char for char in string if not char.isupper())


print(no_capitals("X007XK"))
print(no_capitals("Xmen R cute"))

输出:

007
men  cute
,

最简单的方法是使用+=而不是append。如果使用append,则将char添加到列表中,而不将结果与下一个char连接在一起,并且在结果中返回带有字符的列表。

def no_capitals(string):
    result = ""
    for char in string:
        if not char.isupper(): result += char
    return (result)

print(no_capitals("X007XK"))
print(no_capitals("Xmen R cute"))

更有效的可能性是使用.join()函数。因此,请看下面。

def no_capitals(string):
    result = []
    for char in string:
        if not char.isupper(): result.append(char)
    return "".join(result)

print(no_capitals("X007XK"))
print(no_capitals("Xmen R cute"))
,

使用''.join并删除大写字母,它可以工作(感谢dan1st提供以下注释)。

-0.000547
,

保持创建的结构并仅更改最少的代码量即可:

def no_capitals(string):
    #result as a string
    result = ''
    for char in string:
        #if the character is not uppercase add it to the end of result
        if not char.isupper(): result += char
    return (result)

print(no_capitals("X007XK"))
print(no_capitals("Xmen R cute"))

现在给出:

007
men  cute

注意:男人和可爱之间有两个空格

,
string = "X007XK"

caps_omitted_string = filter(lambda c: not c.isupper(),string)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。