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

Function that prints without capital letters in Python

我正在尝试编写一个简单的函数,它接受一个字符串和 returns 一个没有原始字符串中大写字母的字符串。我看过很多其他帖子,他们的问题与我的相似,但大多数帖子都是在我由于缺乏知识而无法理解的技能水平上解决这个问题的。

这是我想出来的。

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

不过,这个功能不足为奇returns this in list form.

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

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

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

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():

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

使用 ''.join 并删除大写字母,它有效(感谢 dan1st 在下面的评论)。

strs = "X007XK"
results = ''.join([d for d in strs if not d.isupper()])
output: '007'

strs = "Xmen R cute"
results = ''.join([d for d in strs if not d.isupper()])
results
'men  cute'

保留您创建的结构并仅更改您可以执行此操作的最少代码量:

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

注意:men和cute之间有两个空格

string = "X007XK"

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