如何在 python 中拆分一首诗

How to split a poem in 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)

问题是我没有得到正确的音节数,也没有得到任何 space!

之前的最后一个字母

请帮忙!

在正则表达式中,"."匹配任意字符,所以". "匹配"{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 中删除