1

すべての単語を数えるために繰り返し処理している非常に大きなファイルのセットがあります。私が数えている単語には、「hyper-speed」や「12:30」などの句読点を含めることができますが、句読点が単語の末尾にある場合は削除する必要があります。例 ("怖い!" => "怖い" , "リップ" => "リップ")。これが私のアルゴリズムです。この関数に渡されるものはすべて小文字です。

def cleanWord(word):
   if len(word) <= 2:
        return word
    if word[0] in string.punctuation:
        return cleanWord(word[1:])
    if word[-1] in string.punctuation:
        return cleanWord(word[:-2])
    return word

ときどき単語がぎこちなく切り捨てられます (「philidelphi」や「organiz」など)。これは、このような大規模なデータ セットにスペルミスがあるためなのか、それともアルゴリズムに欠陥があるためなのだろうか?

4

1 に答える 1

9
>>> from string import punctuation
>>> word = "-scary!"
>>> word.strip(punctuation)
'scary'

@hughdbrownが指摘したように、それぞれ左と右からのみ削除する代替と代替lstripもあります。rstrip

于 2013-03-24T02:09:33.937 に答える