在Python中将字符大写变为小写

2024-09-28 22:24:21 发布

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

对于分配给我们的任务,我们需要取一首诗并将其标记化并放入数组中。然后使用map和filter函数,我们必须在将诗歌放入一个新的数组中的同时,将其取消计时和资本化。在把这首诗的首字母去掉之前,我已经把一切都弄清楚了。在给我们的示例代码中,它告诉我们如何去掉字符的大写字母,但我需要找出如何读取所有字符并返回一个列表,这样它就可以将所有字符都去掉。这是我目前掌握的代码。在

def decapitalizeTokens(transformed):
    decap = []
    for i in range(0,len(transformed),1):
       lowered = toLower(transformed[i])
       decap.append(lowered)
       print(lowered)
       return decap

def toLower(ch):
    if (ord(ch) <= ord('Z')):
        return chr(ord(ch) + ord('a') - ord('A'))
    else:
        return ch

Tags: 函数代码标记mapreturndef数组ch
3条回答
"".join(map(toLower,filter(str.isAlpha, a_word)))

这就是你要找的吗?在

你真的没有问一个问题,所以我不会真正回答它-你发布的代码有一个相当严重的问题。在

如果传入的字符串中除了字母之外还有其他内容,则会出现意外行为。绳子

Hi!

变更

^{pr2}$

你需要确保你“降低”的字母实际上是字母而不是标点符号。在

您的decapitalizeTokens函数实际上与您想要的非常接近(据我所知),但是如果您将其粘贴到源文件中,那么问题似乎是您的return语句需要减少一个级别。您希望在循环完成后返回小写字符列表,而不是在到达第一次循环结束时返回。在

def decapitalizeTokens(transformed):
    decap = []
    for ch in transformed: # You can iterate directly over a string.
        lowered = toLower(ch)
        decap.append(lowered)
        print(lowered)
    # right here we'll return a list.  ''.join() if you want a string.
    return decap

作为oneliner的另一种形式,您可以理解:

^{pr2}$

添加交互式示例

>>> s = 'A test String'
>>> def toLower(ch):
...     if (ord(ch) <= ord('Z')):
...         return chr(ord(ch) + ord('a') - ord('A'))
...     else:
...         return ch
...
>>>
>>> [toLower(c) for c in s]
['a', '@', 't', 'e', 's', 't', '@', 's', 't', 'r', 'i', 'n', 'g']
>>> [toLower(c) for c in '']
[]
>>> map(toLower, s)
['a', '@', 't', 'e', 's', 't', '@', 's', 't', 'r', 'i', 'n', 'g']
>>> toLower('')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in toLower
TypeError: ord() expected a character, but string of length 0 found
>>>

请注意,我们可以像使用字符一样有效地迭代空白字符串,也可以对教授的toLower函数传递空格时的奇怪行为进行迭代。在

相关问题 更多 >