首页 > 解决方案 > 是否可以在不使用任何导入的情况下从单词中拆分后缀

问题描述

使用正则表达式可以解决我的问题。但是是否可以将“暗示”一词拆分为“暗示”?难道不能使用这样的代码而不是分割标点符号而是后缀吗?

sentence = input()
punctuation = "!\"#$%&'()*+,-./:;<=>?@[\]^`{|}~"
print( "".join([c if c not in punctuation else f' {c} ' for c in sentence]).strip().split() )

标签: python

解决方案


利用str.partition(sep)

在第一次出现 sep 时拆分字符串,并返回一个 3 元组,其中包含分隔符之前的部分、分隔符本身和分隔符之后的部分。如果未找到分隔符,则返回一个包含字符串本身的 3 元组,后跟两个空字符串。

string = 'information and affirmation and emotion'
pattern = 'tion'
out = ''
par = string.partition(pattern)
while par[1]:  # pattern found?
    out += ' '.join([par[0], par[1]])
    par = par[2].partition(pattern)

print(out)

结果: informa tion and affirma tion and emo tion

编辑 - 处理模式列表:

string = 'information and affirmation and emotion, trying and failing.'
pattern_list = ['***', 'tion', 'ing']
for pattern in pattern_list:
    if pattern in string:
        out = ''
        par = string.partition(pattern)
        while par[1]:  # pattern found?
            out += ' '.join([par[0], par[1]])
            remainder = par[2]
            par = par[2].partition(pattern)
        string = ''.join([out, remainder])

print(''.join([out, remainder]))

结果: informa tion and affirma tion and emo tion, try ing and fail ing.


推荐阅读