Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- gs25
- programmers
- Real or Not? NLP with Disaster Tweets
- dacon
- Baekjoon
- 더현대서울 맛집
- github
- 편스토랑 우승상품
- hackerrank
- 금융문자분석경진대회
- 맥북
- 자연어처리
- Kaggle
- Git
- Docker
- PYTHON
- ChatGPT
- 프로그래머스 파이썬
- AI 경진대회
- 코로나19
- 데이콘
- 캐치카페
- 파이썬
- leetcode
- 우분투
- SW Expert Academy
- ubuntu
- 프로그래머스
- 편스토랑
Archives
- Today
- Total
솜씨좋은장씨
[Python] str 형식의 list 문자열 list 형식으로 변환하는 방법 ( str list to list python ) 본문
Programming/Python
[Python] str 형식의 list 문자열 list 형식으로 변환하는 방법 ( str list to list python )
솜씨좋은장씨 2020. 11. 2. 15:43728x90
반응형
업무 중 NER을 담당하는 분께 NER을 활용하여 특정 태스크에 대해서 테스트를 요청드렸었고
결과로 받은 파일은
'INPUT : 롤플레잉 게임 시스템 쇼크를 개발한 회사는\n',
"GOLD : ['O', 'O', 'B-SUB', 'I-SUB', 'O', 'O']\n",
"PRED : ['B-EXP', 'I-EXP', 'B-SUB', 'I-SUB', 'O', 'O']\n",
'CONF : [0.99205834 0.99542373 0.9999639 0.999987 0.99999595 0.9999968 ]\n',
이렇게 NER을 거쳐 나온 결과들이 string 형식으로 한줄한줄 적혀 있는 txt 파일 형식이었습니다.
여기서 NER 모델이 예측해서 뽑아낸 결과를 B-SUB, I-SUB, B-EXP, I-EXP를 통해 찾아내기 위해서는
"PRED : ['B-EXP', 'I-EXP', 'B-SUB', 'I-SUB', 'O', 'O']\n",
이렇게 한 줄로 나와있는 결과에서
"['B-EXP', 'I-EXP', 'B-SUB', 'I-SUB', 'O', 'O']"
이 부분만 뽑아서 list 모양을 하고 있는 str을 아래와 같은 진짜 리스트 형식으로 변환 해야 했습니다.
['B-EXP', 'I-EXP', 'B-SUB', 'I-SUB', 'O', 'O']
이 글에서는 list의 모양을 하고 있는 문자열을 list로 변환하는 방법에 대해서 적어보려합니다.
첫 번째 방법
첫 번째 방법은 ast라는 라이브러리를 활용하는 방법입니다.
방법은 다음과 같습니다.
import ast
x = "['B-EXP', 'I-EXP', 'B-SUB', 'I-SUB', 'O', 'O']"
x = ast.literal_eval(x)
print(x)
['B-EXP', 'I-EXP', 'B-SUB', 'I-SUB', 'O', 'O']
두 번째 방법
두 번째 방법은 json 라이브러리를 활용하는 방법입니다.
방법은 다음과 같습니다.
import json
x2 = '["O", "O", "B-SUB", "I-SUB", "O", "O", {"HI":"JHI"}]'
x2 = json.loads(x2)
print(x2)
['O', 'O', 'B-SUB', 'I-SUB', 'O', 'O', {'HI': 'JHI'}]
두 번째 방법에서는 이상하게도
전체 list 모양 문자열을 감싸고 있는 문자가 ' 가아니고 각 문자를 감싸고 있는 문자가 " 가 아니면
---------------------------------------------------------------------------
JSONDecodeError Traceback (most recent call last)
<ipython-input-48-7d74a965bb1a> in <module>
17 x2 = json.loads(x2)
18 x22 = "['O', 'O', 'B-SUB', 'I-SUB', 'O', 'O', {'HI':'JHI'}]"
---> 19 x3 = json.loads(x22)
20 x, x2, x2_new, x3
~/anaconda3/lib/python3.7/json/__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
346 parse_int is None and parse_float is None and
347 parse_constant is None and object_pairs_hook is None and not kw):
--> 348 return _default_decoder.decode(s)
349 if cls is None:
350 cls = JSONDecoder
~/anaconda3/lib/python3.7/json/decoder.py in decode(self, s, _w)
335
336 """
--> 337 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
338 end = _w(s, end).end()
339 if end != len(s):
~/anaconda3/lib/python3.7/json/decoder.py in raw_decode(self, s, idx)
353 obj, end = self.scan_once(s, idx)
354 except StopIteration as err:
--> 355 raise JSONDecodeError("Expecting value", s, err.value) from None
356 return obj, end
JSONDecodeError: Expecting value: line 1 column 2 (char 1)
위와 같은 오류가 발생하였습니다.
오류에 더 자유롭게 사용하시고 싶으신 분들은 첫 번째 ast 라이브러리를 활용하는 방법을 추천드립니다.
읽어주셔서 감사합니다.
'Programming > Python' 카테고리의 다른 글
[Python] Python을 활용하여 대량의 한글 파일(hwp) 썸네일 편하게 만들어보기! (2) | 2020.11.04 |
---|---|
[Python] PIL(Pillow) 라이브러리를 활용하여 이미지 resize 시 깨지지 않게 저장하는 방법! (0) | 2020.11.04 |
[Python] 문자열의 인코딩을 확인하는 방법 (0) | 2020.09.21 |
[Python] Selenium webdriver를 python 코드로 쉽게 설치하는 방법 (0) | 2020.09.21 |
[Python] Folium 한글 깨짐 현상 해결하기 (0) | 2020.09.21 |
Comments