Python for Process Innovation
#Python, #Javascript, #SAP, #Automation, #ML, #AI
파이썬 io 모듈의 StringIO 활용
Tags: #Python
Update: 2019-01-24

Stackoverflow는 파이썬으로 어플리케이션 개발을 하건 데이터를 다루건 반드시 접하게 되는 개발자들의 질문/답변 사이트입니다. 따라서 이 글을 보시는 모든 분들도 당연히 알고 계시리라 생각합니다.

저도 python이나 pandas와 관련된 대한 답변을 작성할 때가 많은데요, 친절한 질문자들은 답변하는 사람들을 위해 복사하기/붙여넣기 쉬운 데이터를 항상 깔끔하게 첨부 해 줍니다. 부끄럽지만 예전엔 답변을 위한 테스트를 진행하기 위해 이를 메모장에 붙여넣고 txt나 csv로 저장 후 이 파일을 적절한 위치로 복사한 뒤에 pd.read_table, pd.read_csv를 사용하기도 했습니다.

하지만 이런 경우 io 모듈의 StringIO 오브젝트를 사용하면 좋습니다. 특히 아래와 같은 Stackoverflow용 Jupyter notebook을 하나 셋업해 놓고 필요할때마다 txt_table 부분만 바꿔서 사용하면 편리합니다.

from io import StringIO

txt_table=StringIO("""
id  type  tags  theme
1  a  col_t1, col_red, large  t2
2  c  NaN  t1
3  d  col_t2, col_black, small  t2
4  a  col_t4, large, col_yellow  t3
5  b  col_gold, col_fancy,  t2
6  a  col_t1, thick, col_k  t1
7  a  NaN  NaN
8  c  col_t3, fancy, red  t3
""")

df = pd.read_csv(txt_table, sep='\s\s+')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

참고로 pd.read_clipboard()를 이용하면 클립보드의 자료를 바로 가져올 수 있기 때문에 StringIO보다 더더욱 편리할 수 있지만, 제 경우에는 실제 사용할 때 클립보드의 내용이 바뀌는 것을 (습관적으로) 인지하지 못할 때가 많아 의외로 불편한 경우가 더 많았습니다.

Powered by Vue.js(Vuepress + Vuetify)