如何在句子中交替替换单词中的大小写字母? Python

how to replace uppercase and lowercase letters in words alternately in a sentence? Python

我是 Python 编程新手。我正在尝试了解列表。

我想创建一个新程序,可以将句子中的每个单词交替转换为大小写字母。

我被困在这里:

input_text = "hello my name is rahul and i'm from india"
result = ""
myArr = input_text.split(' ')

for idx in range(len(myArr)):
  if idx % 2 == 0 :
    result = result + myArr[idx].upper()
  else:
    result = result + myArr[idx].lower()

print(str(result))

通过这段代码我可以得到,例如:

input : "hello my name is rahul and i'm from india"
output : "HELLOmyNAMEisRAHULandI'MfromINDIA"

但我想得到的是:

input : "hello my name is rahul and i'm from india"
output : "HELLO my NAME is RAHUL and I'M from INDIA"

我想给句子中的每个单词添加一个space。

我已经添加了 space 您要追加到列表的位置:

input_text = "hello my name is rahul and i'm from india"
result = ""
myArr = input_text.split(' ')

for idx in range(len(myArr)):
    if idx % 2 == 0 :
        result = result + myArr[idx].upper() + " "  # added a space
    else:
        result = result + myArr[idx].lower() + " "  # added a space

print(str(result))

这给出:

HELLO my NAME is RAHUL and I'M from INDIA 

您可以将所有值添加到列表中,最后使用 str.join 方法加入它们。

input_text = "hello my name is rahul and i'm from india"
result = []
myArr = input_text.split(' ')

for idx in range(len(myArr)):
    if idx % 2 == 0:
        res = myArr[idx].upper()
    else:
        res = myArr[idx].lower()
    result.append(res)

print(" ".join(result))

输出:

HELLO my NAME is RAHUL and I'M from INDIA

你有点明白了 - 最好的方法是将 capitalized/lowercased 单词添加到列表中,然后使用 .join() 将单词列表转换为字符串每个单词由 space:

分隔
input_text = "hello my name is rahul and i'm from india"
result = ""
myArr = input_text.split(' ')
words = []
for idx in range(len(myArr)):
  if idx % 2 == 0 :
    words.append(myArr[idx].upper())
  else:
    words.append(myArr[idx].lower())

result = ' '.join(words)
print(result)

与其他回答者的建议相反,using repeated concatenation is a bad idea for efficiency reasons

您可以在添加每个单词后在结果中添加一个space,即

result = result + ' '

这还会在字符串末尾添加一个 space,这可能不是您想要的。您可以使用 rstrip() 函数将其删除:

result = result.rstrip()

顺便说一句,result已经是一个字符串,所以你不需要为打印语句将它转换为一个字符串。

所以,把它们放在一起:

input_text = "hello my name is rahul and i'm from india"
result = ""
myArr = input_text.split(' ')

for idx in range(len(myArr)):
  if idx % 2 == 0 :
    result = result + myArr[idx].upper()
  else:
    result = result + myArr[idx].lower()
  result = result + ' '

result = result.rstrip()    

print(result)

我们可以尝试使用列表理解:

input_text = "hello my name is rahul and i'm from india"
words = input_text.split()
output = ' '.join([x.upper() if ind % 2 == 0 else x for ind, x in enumerate(words)])
print(output)  # HELLO my NAME is RAHUL and I'M from INDIA

除了其他答案,我在这里使用 enumerate 提供了另一种类型的答案(参见 https://www.geeksforgeeks.org/enumerate-in-python/),它循环一个列表(或元组)及其索引:

input_text = "hello my name is rahul and i'm from india"

result = []
for idx, word in enumerate(input_text.split()):
    result.append(word.upper() if idx % 2 == 0 else word.lower())
print(' '.join(result))

使用 List Comprehension 也可以像这样缩短答案(参见 if/else in a list comprehension

input_text = "hello my name is rahul and i'm from india"

result = [word.upper() if idx % 2 == 0 else word.lower() for idx, word in enumerate(input_text.split())]
print(' '.join(result))

了解对您的 Python 生活会有帮助 :)