0

多くの文で単語の最初の文字を見つける必要があります。すべての文には、「推測」という単語の何らかの形式があります。つまり、推測、推測などです。ただし、このように「検索」内でワイルドカードを使用することはできません

firstSpace = mySentence.find('conjecture'*,0)

文は次のようになります。

'There is considerable conjecture and debate as to how...'
'He conjectured that the interface was...'

どうすればそれを行うことができますか?ありがとう!

4

3 に答える 3

4

最初に特殊文字を削除してみてください。

x = '“ There is considerable conjecture and debate as to how...

newx = ''.join(e for e in x.lower() if e.isalnum())

print newx

>>> 'thereisconsiderableconjectureanddebateastohow'

次に、 を使用findして単語を見つけます。

幸運を!

編集:

指定した単語の前にある単語を見つけたい場合は、文を分割できます。役立つコードを次に示します。

paragraph = 'The quick brown fox jumps over the lazy dog. I have two big dogs. Furry Dogs are the best. $%^Dogs love me.'
paragraph = ''.join(e for e in paragraph.lower() if e.isalnum() or e.isspace() or e=='.')
sentence_list = paragraph.split('.')
prev_word_list = []
for sentence in sentence_list:
    word_list = sentence.split()
    prev_word = ''
    for i,word in enumerate(word_list):
        if i == 0:
            pass
        else:
            if 'dog' in word.lower():
                prev_word = word_list[i-1]
                prev_word_list.append(prev_word)

これは与える:

>>> print prev_word_list
>>> ['lazy', 'big', 'furry']
于 2012-12-07T07:28:19.790 に答える
2

すべての文には、「推測」という言葉の何らかの形があります。つまり、推測、推測などです。

word in string他の回答に示されている方法は、一般的に失敗します。たとえば、community文に含まれる単語が見つかりませんcommunities

この場合、nltk.stemパッケージで提供されるようなステミング アルゴリズムが必要になる場合があります。

from nltk.stem.snowball import EnglishStemmer
from nltk import word_tokenize

stemmer = EnglishStemmer()
stem_word = stemmer.stem

stem = stem_word(u"conjecture")
sentence = u'He conjectured that the interface was...'
words = word_tokenize(sentence)
found_words = [(i, w) for i, w in enumerate(words) if stem_word(w) == stem]
# -> [(1, u'conjectured')]

nltkには、正確に必要なものに応じて使用できる他のステムおよびトークン化メソッドがあります。

しかし、いくつかの単語は厄介な文字で始まります。

「厄介な文字」は、utf-8バイトシーケンスをcp1252次のように誤って処理した結果です。

>>> utf8bytes = u"microsoft smart quote (\u201c)".encode('utf-8')
>>> print utf8bytes.decode('cp1252')
microsoft smart quote (“)
>>> print utf8bytes.decode('utf-8')
microsoft smart quote (“)

むやみに文字化けしたテキストを削除するのではなく、代わりに文字エンコーディングを修正してください。

#AskObama のツイートが画面上で文字化けした理由: UTF-8、Unicode、ASCII、および ANSI のデコードを理解する 大統領はテレビで公開されたこの問題の例を示しています。

理解するには、すべてのソフトウェア開発者が絶対に、積極的にUnicodeと文字セットについて知る必要がある絶対最小値を読んでください(言い訳はありません!) .

于 2012-12-07T10:32:31.163 に答える