我正在尝试拆分包含斜杠的文本,这些斜杠也将单词拆分为音节。 例如
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)
问题是我没有得到正确数量的音节,也没有任何空格前的最后一个字母!
请帮忙!
答案 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中删除