モジュールからインポートする場合string
、解析関数で使用します。
from string import punctuation
def parsing_func(data):
if not any(i==v for i in data for v in punctuation.replace('_', '')):
print data
上記のこの関数でstring
のように使用すると、すべて正常に動作します。punctuation
次に、句読点をいくつか減らしてデータをチェックしたいと思いました。だから私はこれに変更parsing_func
しました:
def parsing_func(data):
punctuation = punctuation.replace('_', '')
punctuation = punctuation.replace('()', '')
if not any(i==v for i in data for v in punctuation):
print data
しかし、これは次を返します:
Traceback (most recent call last):
File "parser.py", line 58, in <module>
parsing_func(data)
File "ex.py", line 8, in parsing_func
punctuation = punctuation.replace('_', '')
UnboundLocalError: local variable 'punctuation' referenced before assignment
したがって、チェックするテスト関数を作成しますpunctuation
。
def test_func1():
print type(punctuation), punctuation
>>> <type 'str'> !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
これは正常に出力され、エラーはなく、表示されますtype str
。print
最後に、文字列操作を次々とまとめてみます。
def test_func2():
print type(punctuation), punctuation
punctuation = punctuation.replace('_', '')
しかし、print
ステートメントはエラーを返します。
Traceback (most recent call last):
File "parser.py", line 9, in <module>
test_func2()
File "parser.py", line 5, in test_func2
print type(punctuation), punctuation
UnboundLocalError: local variable 'punctuation' referenced before assignment
これはエラーですか? 文字列操作の代わりに印刷しようとするとエラーnamespace
が返されるのはなぜですか?test_func2