2017-12-17 7 views
-1

以下のコードでは、エラーが発生し続けます。私は非常に似ているが、この1つは動作しないように見えるコードを持っています。また、regex101.comを使って正規表現を実行したので、うまくいくはずです。正規表現を使用するときにTypeErrorを取得する

Traceback (most recent call last): 
    File "/Users/name/Assignment 3.py", line 8, in <module> 
    print(re.match(pattern, file1)) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/re.py", line 137, in match 
    return _compile(pattern, flags).match(string) 
TypeError: expected string or buffer  

はコード:私はあなたが本当に欲しいものを推測

import os 
import re 
import csv 

pattern = "^[A-Za-z]*[,]$" 
file1 = open("10000DirtyNames.csv", "r") 

print(re.match(pattern, file1)) 

if (re.match(pattern, file1)) != None: 
    print("Match") 
else: 
    print("Does not match") 

file1.close() 
+2

であなたは*ファイルハンドル*、ではない、その内容を表す文字列を渡しています。 – jonrsharpe

+0

ファイルハンドルではなく、ファイルの内容を渡すためです。 –

答えて

1

は、ファイルの内容に見えるようにされています。また、re.search()re.match()の違いはあります

with open("10000DirtyNames.csv", "r") as file1: 
    if (re.search(pattern, file1.read()): 
     print("Match") 
    else: 
     print("Does not match") 

後者は文字列の先頭でのみ動作します(したがって、アンカーは暗黙的に設定されます)。最後にNoneをチェック
is not Noneを介して行うことができますまたは単にif x:

関連する問題