2015-04-08 7 views
0

Я пытаюсь заменить каждое вхождение Regex выражения в файл с помощью Python с этим кодом:Python Search & Заменить Regex

import re 

def cleanString(string): 
    string = string.replace(" ", "_") 
    string = string.replace('_"', "") 
    string = string.replace('"', '') 
    return string 

test = open('test.t.txt', "w+") 
test = re.sub(r':([\"])(?:(?=(\\?))\2.)*?\1', cleanString(r':([\"])(?:(?=(\\?))\2.)*?\1'), test) 

Однако, когда я бегу сценарий я получаю следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "C:/Python27/test.py", line 10, in <module> 
    test = re.sub(r':([\"])(?:(?=(\\?))\2.)*?\1', cleanString(r':([\"])(?:(?=(\\?))\2.)*?\1'), test) 
    File "C:\Python27\lib\re.py", line 155, in sub 
    return _compile(pattern, flags).sub(repl, string, count) 
TypeError: expected string or buffer 

Я думаю, что это читает файл неправильно, но я не уверен, что фактический вопрос здесь

+0

Прошу прощения, но я не могу получить то, что вы пытаетесь сделать. Как выглядит ваш входной файл и как он выглядит после успешного преобразования? – Finwood

+0

входной файл является оператором sql, где необходимо изменить переменную из нескольких переменных: «this is a variable» to: this_is_a_variable, поэтому я пытаюсь заменить пробелы и удалить кавычки из любых строк, которые следуют шаблону : «*» – yhussain

ответ

1

Ваша cleanString функция ничего не возвращает. Ergo Ошибка «NoneType».

Вы, вероятно, хотите сделать что-то вроде:

def cleanString(string): 
    string = string.replace(" ", "_") 
    string = string.replace('_"', "") 
    string = string.replace('"', '') 
    return string 
+0

Спасибо @ Chirilia-Alexandru, я все еще получаю ошибку, хотя и другую. – yhussain

+0

Обновлен мой код, чтобы отразить ошибку – yhussain