2014-06-22 34 views
0

我有一些JavaScript的文本與Python 有一個在JS HTML elemet這樣的變量來分析:解析JS用正則表達式蟒蛇

this.products = ko.observableArray([#here is some json, #here is some json]) 

observableArray可能是1個JSON的持有者這將是observableArray({'身份證':'234234'})or observableArray(['id':'3123123]),它也可以容納無限數量的json,每個逗號都像代碼一樣粘貼更高

我怎樣才能得到這個字符串與jsons正則表達式我已嘗試:

regex = re.compile('\n^(.*?)=(.*?)$|,',) 
js_text = re.findall(regex, js) 
print(js_text) 

但即時得到:

File "/usr/lib/python2.7/re.py", line 177, in findall return _compile(pattern, flags).findall(string) TypeError: expected string or buffer

+0

你想要id值嗎? –

+0

「用正則表達式解析JS」 - ***不要你了!***使用JSON解析器代替。 –

+0

你想像這樣的'\'id \'正則表達式:\ s * \'([0-9] *)\''? –

回答

0

js是不是字符串或緩衝區。你確定js是一個字符串(或緩衝區)嗎?

# no problem 
>>> js = "this.products = ko.observableArray({'id': '234234'})" 
>>> js_text = re.findall(regex, js) 
>>> print(js_text) 
[] 

# argument is not a string nor a buffer (in this case None) 
>>> js_text = re.findall(regex, None) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/mhawke/virtualenvs/urllib3/lib64/python2.7/re.py", line 177, in findall 
    return _compile(pattern, flags).findall(string) 
TypeError: expected string or buffer 
>>> js_text = re.findall(regex, js) 
>>> print(js_text) 
[] 

順便說一句,它稍好於撥打regex.findall(js)

而且,你的正則表達式模式有一個(不同的)問題。