반응형

Python에서 문자열을 구분자로 분할할 때 str.split 을 사용해서 분리한다

그런데, 구분자가 여러개일 때의 분리가 필요해서 찾아보게 되었다.

 

re.split 사용법

import re

result = re.split(pattern, string, maxsplit=0, flags=0)

re를 import 해준다

 

pattern : 구분자 패턴

string : 분할할 문자열

maxsplit=0 : 수행할 최대의 분할 수로, 기본값은 0(생략가능)

flags=0 : 선택적 플래그 인자(생략가능)

 

여러 구분자로 나누기

ex)

text = "가1나다라1마바사2아자차1카타"

print(text.split("1"))

print(re.split("1|2",text))

결과값
['가', '나다라', '마바사2아자차', '카타']
['가', '나다라', '마바사', '아자차', '카타']

구분자는 "|" 로 나눌 수 있다

혹은 [] 대괄호 안에 넣어서 구분할 수도 있다

text = "가1나다라1마바사2아자차1카타"

print(text.split("1"))

print(re.split("[12]",text))

결과값
['가', '나다라', '마바사2아자차', '카타']
['가', '나다라', '마바사', '아자차', '카타']

 

공백으로 나누기

text = "가 나다라    마바사  아자차 카타"

print(text.split(" "))

print(re.split(r"\s",text))

print(re.split(r"\s+",text))


결과값
['가', '나다라', '', '', '', '마바사', '', '아자차', '카타']
['가', '나다라', '', '', '', '마바사', '', '아자차', '카타']
['가', '나다라', '마바사', '아자차', '카타']

\s 문자열 패던을 입력하면 공백으로 나눌 수 있다
\s+를 사용하면 공백이 여러개라도 하나의 공백으로 처리해서 나눌 수 있다!

 

maxsplit

text = "가 나다라    마바사  아자차 카타"

print(re.split(r"\s+",text, maxsplit=1))
print(re.split(r"\s+",text, maxsplit=2))
print(re.split(r"\s+",text, maxsplit=3))

결과값
['가', '나다라    마바사  아자차 카타']
['가', '나다라', '마바사  아자차 카타']
['가', '나다라', '마바사', '아자차 카타']

maxsplit 은 분할을 제한한다

 

값이 1이면 2개로 분할, 2이면 3으로 분할... 이런식으로 분할은 해당 값 만큼 분할 되어서 나온 결과값은 값+1

 

flag는 사실 뭘 하는건지 모르겠다...

re.split을 이용해서 크롤링 값을 나눠서 저장하는거에 유용하게 사용했다

 

 

https://docs.python.org/3/library/re.html

반응형
반응형

최근 개인 프로젝트로 만드는 중인 타자연습 사이트

JSON파일을 만들어서 로컬에서 던어를 불로오도록 만들었는데 DB와 프론트를 연결해보고 싶어졌다.

항상 팀 프로젝트만 해와서 다른 분들이 DB나 백을 해주셨던터라 그쪽으로는 아는게 없어서 Chat GPT에게 질문하면서

JSON 파일을 테이블로 만들어봤다

 

1. Chat GPT에게 제안받은 방법

JSON 파일 -> csv파일 -> MySQL에 테이블로 생성

Chat GPT가 제안한 방법은 가지고 있는 JSON파일을 일단 CSV파일로 생성한 후

MySQL에서 다시 테이블로 변환하는 과정을 추천해줬다

 

일단 Json 파일을 csv로 만드는 javaScript 코드를 생성하여 csv파일을 생성하는 것 까지는 어렵지 않았으나

이제 막 설치한 MySQL Workbench는 설정이 안된게 많았던건지 여러가지 오류를 발생시키며 진행이 안되어서 3시간이나 쓰고 말았다

2. MySQL Workbrench를 사용해서 테이블을 생성하는 방법 *매우간단

스키마에서 오른쪽 마우스 클릭 후

"Table Data Import Wizard"를 클릭해준다.

 

table에 넣기 원하는 json 파일 경로를 지정

새로운 테이블을 만들거나, 기존에 테이블에 넣기를 선택한다

이후 원하는 Field Type을 작성해주면 완료

 

 

--

 

 

id, value와 같은 컬럼 명을 사용하여서 생성하였는데, 이런... 단어들은 뭔가 컬럼명으로 사용해도 괜찮은걸까? 좀 더 고민해보고 컬럼 명은 수정하도록 해야겠다

반응형
반응형

Error Code: 1046. No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar.

해당 오류는 어떤 DB의 데이터 테이블을 가지고 올지 선언을 해주지 않았을 때 해당 오류가 발생한다.

 

해결방안으로는

1. 테이블 앞에 DB이름을 작성해준다

2. 자주 사용하는 스키마를 기본 스키마(Default Schema)로 지정해준다.

 

1. 테이블 앞에 DB이름 작성

회사에서는 이 방법으로 DB 조회를 하고있다.

 

SELECT *
FROM DB이름.테이블 이름
WHERE ...

 

위와 같이 DB이름을 먼저 입력 후 뒤에 테이블 이름을 작성해주면 된다.

나의 경우 1046오류를 내가 기존에 가지고 있는 scv파일을 새로운 테이블로 새로 작성하는 과정에서 만났는데

 

스키마가 생성되지 않은 상태라서 스키마부터 생성해주었다

 

스키마 생성 방법

MySQL Workbench의 왼쪽 상단

"Create a new schema in the connected server"

을 클릭하여 새로운 스키마를 생성해준다

이름과 캐릭터셋을 설정해주면 된다

utf8로 설정하여 만든다

 

2. 자주 사용하는 스키마를 기본 스키마(Default Schema)로 지정

개인 프로젝트를 진행할 예정이므로 가장 자주 사용할 DB를 기본 스키마로 지정해주었다

오른쪽 마우스 클릭 후 Set as Default Schema 클릭

 

만약 네비게이터에서 스키마가 보이지 않는다면

탭의 하단에서 Schemas를 클릭하여 찾아준다

반응형

+ Recent posts