我需要制作一个程序,将句子中的第一个单词大写,我想确保可以使用所有用于结束句子的特殊字符。
我无法导入任何东西!这是一个类,我只想要一些例子来做到这一点。
我试图使用if查看列表以查看是否找到匹配的字符并执行正确的拆分操作...
这是我现在拥有的功能......我知道它一点也不好,因为它只返回原始字符串......
def getSplit(userString):
userStringList = []
if "? " in userString:
userStringList=userString.split("? ")
elif "! " in userStringList:
userStringList = userString.split("! ")
elif ". " in userStringList:
userStringList = userString.split(". ")
else:
userStringList = userString
return userStringList
我希望能够输入this is a test. this is a test? this is definitely a test!
并获取[this is a test.', 'this is a test?', 'this is definitely a test!']
并且这将把句子列表发送到另一个函数,以使每个句子的第一个字母大写。
这是一个旧的家庭作业,我只能使用一个特殊字符将字符串分成列表。 buti希望用户能够输入更多然后只是一种句子...
答案 0 :(得分:0)
我会在每个空格处拆分字符串。然后扫描列表中包含特殊字符的单词。如果存在,则下一个单词大写。最后加入列表。当然,这假设单词之间的连续空格不超过两个。
def capitalise(text):
words = text.split()
new_words = [words[0].capitalize()]
i = 1
while i < len(words) - 1:
new_words.append(words[i])
if "." in words[i] or "!" in words[i] or "?" in words[i]:
i += 1
new_words.append(words[i].capitalize())
i += 1
return " ".join(new_words)
答案 1 :(得分:0)
这可能是肝脏。使用str.replace
将空格替换为特殊字符,并使用str.split
<强>实施例强>
def getSplit(userString):
return userString.replace("!", " ").replace("?", " ").replace(".", " ").split()
print(map(lambda x:x.capitalize, getSplit("sdfsdf! sdfsdfdf? sdfsfdsf.sdfsdfsd!fdfgdfg?dsfdsfgf")))
答案 2 :(得分:0)
通常,您可以使用re.split(),但由于您无法导入任何内容,因此最好的选择就是执行for循环。这是:
def getSplit(user_input):
n = len(user_input)
sentences =[]
previdx = 0
for i in range(n - 1):
if(user_input[i:i+2] in ['. ', '! ', '? ']):
sentences.append(user_input[previdx:i+2].capitalize())
previdx = i + 2
sentences.append(user_input[previdx:n].capitalize())
return "".join(sentences)
答案 3 :(得分:0)
如果你可以使用python默认提供的re模块,你可以这样做:
import re
a = 'test this. and that, and maybe something else?even without space. or with multiple.\nor line breaks.'
print(re.sub(r'[.!?]\s*\w', lambda x: x.group(0).upper(), a))
会导致:
test this. And that, and maybe something else?Even without space. Or with multiple.\nOr line breaks.