我正在修改一个简单的代码,但我似乎无法理解它。
我想让用户以句子的形式在提示中输入一个字符串。例如:
hey. how are you? the c.i.a. is watching! lol.
它返回:
Hey. How are you? The C.I.A. Is watching! Lol.
所以它的要求是:
- 如果字符串是字母,则首字母大写
- 在每个句点、问号或感叹号后大写
- 如果字母后面有句点且前面没有字母,则将字母大写
目前我只有
def fix_capitalization():
s = raw_input("Enter string: ")
if s[0:1] == 'a' < [char] < 'z':
capitalize(s)
我将如何做到这一点的思考过程如下
Capitalize(s) 将第一个字母大写,然后遍历字符串,如果有句点、问号或感叹号,则下一个字母将大写。如果句点前有一个字母且句点前有两个字符,则将句点前的字母大写。
请您参考如下方法:
下面的代码符合您的 3 条规则。但我认为你的规则并不完整。 'is' 中的字符 'i' 符合规则 2,但不应大写。
import re
def uppercase(matchobj):
return matchobj.group(0).upper()
def capitalize(s):
return re.sub('^([a-z])|[\.|\?|\!]\s*([a-z])|\s+([a-z])(?=\.)', uppercase, s)
s = """hey. how are you? the c.i.a. is watching! lol. """
print capitalize(s)
输出:
Hey. How are you? The C.I.A. Is watching! Lol.
