如何在python中分割一首诗

时间:2015-01-17 02:05:23

标签: python 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."
result = re.split('; |/| |. |, ', text)

问题是我没有得到正确数量的音节,也没有任何空格前的最后一个字母!

请帮忙!

2 个答案:

答案 0 :(得分:1)

在正则表达式中,"."匹配任何字符,因此". ""{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.']

答案 1 :(得分:0)

如果我理解正确,您可以使用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中删除