如何在句子中交替替换单词中的大小写字母? 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 生活会有帮助 :)
我是 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 生活会有帮助 :)