我有一个问题,我需要在大写到小写的句子之间分隔一个文本并打印出来
示例:
我们印度人民郑重决心将印度建设成为一个主权、社会主义、世俗、民主的共和国,并保障其所有公民的安全
结果:
我们,印度人民,
郑重决定将印度组成一个
主权、社会主义、世俗、民主共和国
确保所有公民的安全
我有这个:
i=0
s='WE, THE PEOPLE OF INDIA, having solemnly resolved, to constitute India into a SOVEREIGN, SOCIALIST, SECULAR, DEMOCRATIC REPUBLIC and to secure to all its citizens'
t= ''
while i < len(s):
if not(s[i].isalpha())==True:
i += 1
continue
if s[i].isupper()==s[i+1].islower():
i += 1
t = t+','
print(s[i])
break
t=t+s[i]
#print(t)
i += 1
print(t)
print(i)
但是,这是我的结果:
WETHEPEOPLEOFINDIAhavin,
我不明白为什么它不停在“h”处
请帮帮我
如果您试图根据单词是大写还是(部分)小写来分组,那么
itertools.groupby
可能是一种更简单的方法:代码在
"g "
处停止,因为"g".isupper()
和" ".islower()
都是False
,这满足中断循环的相等性检查。它不会在" h"
处停止,因为" ".isupper()
是False
,而"h".islower()
是True
为了让代码按照您希望的方式工作,跳过循环中的非字母字符是不够的,因为它们仍然存在于
s
。拆分字符串并对结果列表进行操作(正如我在上面的代码中所做的那样)使它变得更容易,将单词分类为完整单元(这是groupby
使用any
函数所做的),而不是试图检测它们之间的边界相关问题 更多 >
编程相关推荐