2017-12-17 4 views
0

저는 웹 스크래핑에 상당히 익숙하지만, json.dumps를 모른 채 file.write()를 사용하여 파일에 쓴 많은 양의 데이터를 수집했습니다.) 존재했다. 데이터를 JSON으로 다시 파이썬 3에로드 할 수 있도록 데이터를 다시 포맷하여이 문제를 해결하려고합니다.백 슬래시 직후의 모든 작은 따옴표 바꾸기

문자열에서 작은 따옴표 (큰 따옴표로 묶음)를 모두 바꿀 수있게하려면 백 슬래시 바로 뒤의 문자를 바꾸지 않아야합니다. 예를 들어 :

{'please':'don\'t touch friend\'s cat'} 

이 될 것입니다 :

{"please":"don\'t touch friend\'s cat"} 

이 포맷에 다른 조언도 크게

을 감상 할 수있다.

+0

'json.dumps (your_variable)'? –

답변

2

실제로 데이터를 JSON으로 인코딩하지 않고 파일에 작성한 경우 해당 데이터는 해당 데이터의 repr()으로 "인코딩 됨"가능성이 가장 높습니다.이 데이터는 간단한 데이터 유형에 유효한 Python 코드 여야합니다.

In [3]: import ast 

In [4]: ast.literal_eval(r"{'please':'don\'t touch friend\'s cat'}") 
Out[4]: {'please': "don't touch friend's cat"} 
0

이는 re 모듈 정규식을 사용하여 매우 쉽게 수행 할 수 있습니다 : 당신은 ast.literal_eval 다시 구문 분석 할 수 있습니다. 당신이 문자열로 메모리에 데이터를로드 할 수있는 경우에 당신은 간단하게 실행할 수 있습니다

re.sub(r'(?<!\\)\'', '"', my_data_string)

이것이하는 일은 그 앞에 백 슬래시 모든 작은 따옴표를 일치하고 따옴표로 대체합니다. 이 기능의 작동 방식에 대한 자세한 내용은 여기를 참조하십시오. https://docs.python.org/3/library/re.html

관련 문제