我正在尝试制作一个脚本,该脚本将接受一个字符串作为输入,其中所有单词一起运行,但每个单词的第一个字符都是大写。它应该将字符串转换为一个字符串,其中单词之间用空格分隔,并且只有第一个单词以大写字母开头
例如(输入):
"StopWhateverYouAreDoingInterestingIDontCare"
预期产出:
"Stop whatever you are doing interesting I dont care"
以下是我到目前为止写的一篇:
string_input = "StopWhateverYouAreDoingInterestingIDontCare"
def organize_string():
start_sentence = string_input[0]
index_of_i = string_input.index("I")
for i in string_input[1:]:
if i == "I" and string_input[index_of_i + 1].isupper():
start_sentence += ' ' + i
elif i.isupper():
start_sentence += ' ' + i.lower()
else:
start_sentence += i
return start_sentence
虽然这涉及到一些部分,但我正在努力区分字母“I”是单个还是整个单词。以下是我的输出:
"Stop whatever you are doing interesting i dont care"
单个“I”需要大写,而“有趣”一词中的“I”应该小写为“有趣”
我将非常感谢所有的帮助
我对你的程序做了一些修改。我用计数器检查索引位置。我得到了您的预期输出:
在本例中,正则表达式就可以了
解释:
(?<=[a-z])(?=[A-Z])
-一个小写字母的后向查找,后跟一个前向大写字母|
-(表示or
)(?<=[A-Z])(?=[A-Z])
-对大写字母的向后查找,后跟向前查找的大写字母当小写字母后跟大写字母时,或者当大写字母后跟大写字母时,此正则表达式将替换空格
更新:这不能正确地将单词小写(除了I和第一个\u单词)
更新2:对此的修复是:
印刷品:
更新3:我了解了为什么您的代码不能正确地构成句子(我应该首先这样做,而不是发布我自己的解决方案^{)
下面是更正后的代码,其中包含一些关于更改的注释
!。我注释掉了
index_of_i = string_input.index("I")
行,因为它不满足您的需要(它找到第一个大写字母I的索引,而不是应该独立的I(它在Interesting
中找到I的索引,而不是在string_input
字符串中找到IDont
)。这不是一个正确的语句for i, char in enumerate(string_input[1:], 1)
{a1}表示字符串中从1开始的字母的索引(因为{我将
i
更改为char
,以便更清楚地说明char
是字符。除了这些更改之外,代码与您编写的代码相同现在程序给出正确的输出
输出
相关问题 更多 >
编程相关推荐