我想分割一个文本,其中包含将文字拆分为音节的斜线。 例如如何在Python中分割一首诗
text = "Hi! I do/n'/t know how ma/ny sy/lla/bu/s a/re the/re i/n thi/s te/x/te, who kno/w."
result = re.split('; |/| |. |, ', text)
的问题是,我没有得到正确的数音节,也没有任何空间之前,最后一个字母!
请任何帮助!
我想分割一个文本,其中包含将文字拆分为音节的斜线。 例如如何在Python中分割一首诗
text = "Hi! I do/n'/t know how ma/ny sy/lla/bu/s a/re the/re i/n thi/s te/x/te, who kno/w."
result = re.split('; |/| |. |, ', text)
的问题是,我没有得到正确的数音节,也没有任何空间之前,最后一个字母!
请任何帮助!
在正则表达式中,"."
与任何字符匹配,所以". "
匹配"{any character}{space}"
。
要匹配文字时间段,您需要使用"\."
或将其放入字符集([.]
)中。
尝试
syllables = re.compile("[.,:;!?]? |/").split
text = "Hi! I do/n'/t know how ma/ny sy/lla/bu/s a/re the/re i/n thi/s te/x/te, who kno/w."
print(syllables(text))
这给
['Hi', 'I', 'do', "n'", 't', 'know', 'how', 'ma', 'ny', 'sy', 'lla', 'bu', 's', 'a', 're', '', 'the', 're', 'i', 'n', 'thi', 's', 'te', 'x', 'te', 'who', 'kno', 'w.']
如果我理解正确的话,你可以使用str.translate和正常分裂:
from string import maketrans
text = "Hi! I do/n'/t know how ma/ny sy/lla/bu/s a/re the/re i/n thi/s te/x/te, who kno/w."
tr = maketrans("/,.'"," ")
print(text.translate(tr)).split()
['Hi!', 'I', 'do', 'n', 't', 'know', 'how', 'ma', 'ny', 'sy', 'lla', 'bu', 's', 'a', 're', 'the', 're', 'i', 'n', 'thi', 's', 'te', 'x', 'te', 'who', 'kno', 'w']
如果你想保持'
像do/n'/t
:
tr = maketrans("/,."," ")
print(text.translate(tr)).split()
['Hi!', 'I', 'do', "n'", 't', 'know', 'how', 'ma', 'ny', 'sy', 'lla', 'bu', 's', 'a', 're', 'the', 're', 'i', 'n', 'thi', 's', 'te', 'x', 'te', 'who', 'kno', 'w']
如果你想保留期限从maketrans删除它也
@HughBothwell,我补充说,这只是在maketrans中包含'''的问题,或者不是 –
我同意;我只是把它指出来,看起来你已经在解决它了。 –
@HughBothwell,我原本是这么想的,但是开始第二次猜测,从OP的问题中不完全清楚它应该是什么。 –
你要输出什么? –