2010-08-05 2 views
0

URL에서 일부 데이터를 가져 와서 온라인에서 Jason 데이터 형식의 데이터를 검색하지만 simplejson.loads (데이터)를 사용하려고하면 예외가 발생합니다.simplejson을 사용하여 다음 데이터를 디코딩하는 방법은 무엇입니까?

처음으로 jason 데이터를 처리 할 때 어떤 방법으로 데이터를 디코딩합니까? 감사

================= 결과 = simplejson.loads (데이터 인코딩 = "UTF-8") 파일 "F : 내 문서 \ \ 내 "F : \ My Documents \ My Dropbox \ StockDataDownloader \ simplejson \ decoder.py"파일에서 "Dropbox \ StockDataDownloader \ simplejson__init __. py", 401 행을로드합니다. ", 402 행, 디코드 obj, end = self.raw_decode (s, idx = _w (s, 0) .end()) 파일"F : \ My Documents \ My Dropbox \ StockDataDownloader \ simplejson \ decoder.py ", line 420, raw_decode raise JSONDecodeError ("No JSON 객체가 디코딩 될 수 없음 ", s, idx) simplejson.decoder.JSONDecodeError : JSON 객체가 없습니다. 디코딩 될 : 행 1 열 0 (CHAR 0)

============================

데이터 = " {ID : 0, N : '2ndChance', NC : '528', R : 'NONE', I : 'ID', 레이블 : '수요일 2010 년 8 월 4 일 05:05 PM' L : 0.335, L : 0.335, S : 0.345, SV : 20.000, O : 0.335, H : 0.335, L : 0.335, V : 17085.000, SC : '4', PV : 0.320, P : 4.6875, P : 'X', V _ : ''}, {ID : 1, N : '8 텔레콤', NC : 'E25' 없음, M : -, LT : 0.190, C : 0.000, VL : 965.000, BV : 1305.000, B : 0.185, S : 0.190, SV : 641.000, O : 0.185, H : 0.190 , L : 0.185, V : 179525.000, SC : '2', PV : 0.190, P : 0.0, P : 'X', V _ : ''}, ID : 2, N : 'A-Sonic' LT : 0.090, C : 0.005, VL : 1278.000, BV : 17.000, B : 0.090, S : 0.095, SV : 346.000, R : '없음', I : '없음' O : 0.090, H : 0.090, L : 0.090, V : 115020.000, SC : 'A', PV : 0.085, P : 5.882352734375, P _ : 'X', V _ : ''}, {ID : 3, N : AA Grp ', NC :'5GZ ', R :'NONE ' , I : 없음, M : t, LT : 0.000, C : 0.000, VL : 0.000, BV : 100.000, B : 0.050, S : 0.060, SV : 50.000, O : 0.000, H : 0.000, L : 0.000, V : 0.000, SC : '2', PV : 0.050, P : 0.0, P _ : 'X', V_ : ''}]} "

답변

2

simplejson을 올바르게 사용하고 있지만 데이터가 JSON 형식을 제대로 사용하고 있지 않다는 것을 알려주었습니다. JSON 무엇인지 보여주기 위해 간단한 구문 다이어그램을 사용하는, json.org 봐 : (오브젝트가 비어있는 경우 } 바로 다음에하지 않는 한), JSON은 항상 문자열을 가지고 {객체 다이어그램 - 및 에서 볼 수 있듯이 다이어그램은 큰 따옴표로 시작하는 것을 의미합니다. 그래서, 매우 문자열의 시작 없습니다 :

{identifier: 

그 잘못된 JSON의를 알려줍니다 - 더 큰 따옴표 단어 identifier 주위에.

이 문제를 해결하는 것은 그곳에있는 것만 큼 쉽지는 않지만, 적어도 코드에 관해서는 안심 시키길 원합니다. Sigh 오래 된 HTML 시대의 위대한 전통과 같은 깨진 웹 사이트는 그들이 깨어있는 기술이 얼마나 현대적이든 상관없이 우리와 함께 있습니다. :-(

+0

답변 해 주셔서 감사합니다. Yah, 이중 따옴표를 사용하여 키를 둘러싸고 작은 따옴표를 큰 따옴표로 변경하려고하면 simplejson을 사용하여 디코딩 할 수 있습니다. 정규 표현식을 사용하여 큰 따옴표로 키와 서라운드를 검색 한 다음 모든 단일 큰 따옴표로 따옴표를 붙인 다음 simplejson을 사용하여 데이터를 디코딩 하시겠습니까? 데이터는 증권 거래소 웹 사이트에서 주식 정보를 표시합니다. – yongzhy

+0

@yongzhy, 정규식 + simplejson의 엉망이 아닌 pyparsing을 권하고 싶습니다. http://pyparsing.wikispaces.com/을 참고하십시오. - 그러나 요지는 정확합니다. simplejson을 사용하여 구문 분석을 할 수 없습니다. json. –

관련 문제