반응형
Notice
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 컴퓨터공학
- 컴퓨터비전
- 소프트웨어공학
- 데이터분석
- 빅데이터
- 데이터과학
- 디자인패턴
- 컴퓨터과학
- 알고리즘
- 인공지능
- 데이터구조
- 자료구조
- springboot
- 클라우드컴퓨팅
- 자바스크립트
- Yes
- 보안
- 네트워크보안
- 프로그래밍
- 웹개발
- 네트워크
- 버전관리
- 사이버보안
- 데이터베이스
- 소프트웨어
- 파이썬
- 프로그래밍언어
- 딥러닝
- I'm Sorry
- 머신러닝
Archives
- Today
- Total
스택큐힙리스트
JSON에서 자동으로 추가된 바닥에 대한 두 개의 역슬래시를 관리합니다. 본문
반응형
아래와 같이 코드가 있습니다.
with open(Elastic_Secret_File) as f:
yaml_data = yaml.safe_load(f)
for key, value in dict(yaml_data[xxx][xxxx][xxxx][xxxx][xxxxx]).items():
Ela_User = value[clusterCredentials][username]
Ela_Pass = str(value[clusterCredentials][password].replace(', ))
#Ela_Pass = value[clusterCredentials][password]
Ela_Host = value[urls]
print (Ela_Pass)
es_secret_data = toml.load(./secrets/elasticsearch-password.toml)
es_secret_data['password'] = Ela_Pass
es_secret_data1 = ast.literal_eval(json.dumps(es_secret_data))
print (es_secret_data1)
with open('./secrets/elasticsearch-password.toml', 'w') as f:
elastic_toml_string = toml.dump(es_secret_data1, f)
Ela_Pass는 \ 문자를 포함한 비밀번호 문자열을 가지고 있습니다.
json은 추가로 역슬래시를 문자열에 추가하여 최종 문자열에 역슬래시를 추가하지 않습니다.
예를 들어
Ela_Pass = 1\n2\t3\a6
{'password': '1\n2\t3\\a6'}
나는 .decode('string-escape')와 .decode('unicode-escape')를 시도해 보았지만, 이는 파이썬에서 지원하는 특수 시퀀스에만 작동합니다.
도움이 필요합니다. 추가 백슬래시 없이 원래의 문자열을 유지하는 방법은 무엇인가요?
답변 1
이렇게 중복된 백슬래시를 제거할 수 있습니다:
json.dumps(es_secret_data).replace('\\\\', '\\')
파이썬에서 백슬래시 문자를 백슬래시로 이스케이프해야 합니다. 그래서 네 번의 백슬래시가 있는 것입니다.
그러나 JSON은 그 이유로 추가 백슬래시를 추가합니다. 이들을 대체한 후에는 json.reads()를 사용하여 원래의 비밀번호를 가져올 수 없습니다. JSON은 백슬래시를 백슬래시로 이스케이프하기 위해 사용됩니다. 따라서 json에서 두 번의 백슬래시는 단일 JSON 문자를 나타냅니다.
답변 2
JSON은 데이터 교환을 위한 경량의 형식으로, 자바스크립트 객체 표기법을 사용하여 데이터를 구조화합니다. 그러나 때로는 JSON 데이터를 파이썬에서 사용할 때 문제가 발생할 수 있습니다. 그 중 하나는 JSON에서 자동으로 추가되는 이중 백슬래시 역슬래시(double backslashes)입니다.이중 백슬래시는 일반적으로 이스케이프 문자(escape character)로 해석되어야 합니다. 그러나 JSON에서는 역슬래시를 특수 문자의 앞에 추가함으로써 이스케이프 문자를 나타냅니다. 이로 인해 JSON 데이터에 이중 백슬래시가 추가되는 경우, 파이썬에서는 실제 이중 백슬래시를 처리해야 합니다.
파이썬에서 이중 백슬래시를 처리하기 위해서는 다음 세 가지 방법을 사용할 수 있습니다.
첫 번째 방법은 JSON 데이터를 문자열로 읽은 후, 파이썬의 `replace()` 메서드를 사용하여 이중 백슬래시를 단일 백슬래시로 변경하는 것입니다. 이 방법은 간단하지만, 큰 데이터셋에서는 처리에 시간이 오래 걸릴 수 있습니다.
두 번째 방법은 JSON 데이터를 파싱한 후, 파이썬의 `json.dumps()` 메서드를 사용하여 다시 JSON 형식의 문자열로 변환하는 것입니다. 이렇게 하면 파이썬은 자동으로 이중 백슬래시를 단일 백슬래시로 변경하여 결과를 반환합니다.
마지막 방법은 파이썬의 `json.loads()` 메서드를 사용하여 JSON 데이터를 딕셔너리나 리스트와 같은 파이썬 객체로 읽어들이는 것입니다. 이렇게 하면 JSON 데이터의 이중 백슬래시가 파이썬에서 자동으로 처리되므로 문제가 발생하지 않습니다.
JSON 데이터에서 자동으로 추가되는 이중 백슬래시를 처리하는 방법은 여러 가지가 있습니다. 앞서 언급한 방법들을 사용하는 것은 데이터 크기와 성능 요구 사항에 따라 결정될 수 있습니다.
따라서 JSON 데이터를 파이썬에서 사용할 때 이중 백슬래시의 처리에 주의해야 합니다. 이중 백슬래시를 올바르게 처리하는 방법을 선택하여 JSON 데이터를 파이썬에서 사용하는 데 문제가 없도록 해야 합니다.
반응형
Comments