-4

次の関数を含むモジュール ファイルがあります。

def replace(filename):
    match = re.sub(r'[^\s^\w]risk', 'risk', filename)
    return match

def count_words(newstring):
    from collections import defaultdict
    word_dict=defaultdict(int)
    for line in newstring:
        words=line.lower().split()
        for word in words:
            word_dict[word]+=1

    for word in word_dict:
        if'risk'==word:
           return word, word_dict[word] 

IDLEでこれを行うと:

>>> mylist = open('C:\\Users\\ahn_133\\Desktop\\Python Project\\test10.txt').read()
>>> newstrings=replace(mylist)    
>>> newone=count_words(newstrings)

test10.txt には、次のようなテスト用の単語が含まれています。

#

リスク リスク リスクよりリスク。危険?

#

次のエラーが表示されます。

Traceback (most recent call last):
  File "<pyshell#134>", line 1, in <module>
    newPH = replace(newPassage)
  File "C:\Users\ahn_133\Desktop\Python Project\text_modules.py", line 56, in replace
    match = re.sub(r'[^\s^\w]risk', 'risk', filename)
  File "C:\Python27\lib\re.py", line 151, in sub
    return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or buffer

ファイルに保存せずに両方の関数を実行し、newstringsを使用して開き、関数を実行する方法はありますか?readlines()count_words

4

1 に答える 1

0

モジュールを実行するには、アイコンを実行するpython modulename.pyか、またはpython.exe modulename.pyダブルクリックします。

しかし、あなたの問題は実際にはあなたの質問のタイトルが述べているものではないと思うので、Pythonをデバッグする方法を本当に学ぶべきです

于 2012-09-01T05:56:07.717 に答える