将包含多个特殊字符的字符串拆分为列表,而不导入python中的任何内容

2024-10-01 07:50:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要做一个程序,将大写的第一个字在一个句子,我想确保所有的特殊字符是用来结束一个句子可以使用。你知道吗

我不能进口任何东西!这是一个类,我只想一些例子来做这件事。你知道吗

我试着使用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!']

这将把句子列表发送给另一个函数,使每个句子的第一个字母大写。你知道吗

这是一个旧的家庭作业,我只能让它使用一个特殊的字符分隔成一个列表的字符串。但是我想用户能放进不止一种句子。。。你知道吗


Tags: 字符串intest列表ifisthis字符
3条回答

这可能是他。使用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")))

我会在每个空白处分开绳子。然后扫描包含特殊字符的单词列表。如果有的话,下一个词是大写的。在最后加入列表。当然,这是假设单词之间的连续空格不超过两个。你知道吗

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)

通常,你可以重新拆分(),但由于无法导入任何内容,因此最好的选择是执行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)

相关问题 更多 >