我想從變量中處理用戶輸入的正則表達式。很多搜索後,我想出了以下內容:代碼變量的如何在python正則表達式中使用變量?
釋:
step
是用作輸入的正則表達式
例如串
替換| - |空間,
更換| * |空,
替代|/| \ | squot |空間
b is a list
元素。元素是根據正則表達式獲取和修改的。
i is integer
從其他功能接收到訪問表b利用i作爲索引
予處理上面的字符串以獲得陣列,然後用數組的最後一個元素作爲替換字符串
第一元素被刪除因爲它不是必需的。 所有其他元素需要替換字符串替換。
def replacer(step,i,b):
steparray = step.split('|')
del steparray[0]
final = steparray.pop()
if final == "space":
subst = u" "
elif final == "squot":
subst = u"'"
elif final == "dquot":
subst = u"\""
else:
subst = u"%s"%final
for input in xrange(0,len(steparray)):
test=steparray[input]
regex = re.compile(ur'%s'%test)
b[i] = re.sub(regex, subst, b[i])
print b[i]
然而,當我運行上面的代碼,顯示了以下錯誤:
File "CSV_process.py", line 78, in processor
replacer(step,i,b)
File "CSV_process.py", line 115, in replacer
regex = re.compile(ur'%s'%test)
File "/usr/lib/python2.7/re.py", line 190, in compile
return _compile(pattern, flags)
File "/usr/lib/python2.7/re.py", line 242, in _compile
raise error, v # invalid expression
sre_constants.error: nothing to repeat
我嘗試了很多,但不知道如何正則表達式的作品。請幫助錯誤。
最後一個要求是從用戶輸入獲得一個特殊字符與其他字符(再次從用戶輸入)
PS替換:此外,代碼沒有242線,但誤差在線242.數組在for循環結束後發生錯誤嗎?
或許''測試''開始於'*'。 – Maroun 2015-02-08 09:31:45
你是以'*'開頭的意思?我沒有允許'*'作爲輸入,但b [i]可能包含'*' – AJINKYA 2015-02-08 09:37:13