티스토리 뷰
728x90
aa001,aa002,aa003,ddd,aa004,bb001,bb002,bb003,aaa,ccc,bb005
만약 csv 파일이나 엑셀에 위와 같은 문자열들이 있을 때 숫자와 문자열을 분리를 하고
또 연속된 숫자들이면 (aa001~aa004)시작~끝까지 이런식으로 변경을 하고 싶을 때
숫자가 있는 문자열도 있고 없는 문자열들도 있다.
파이썬으로 노가다를 해서 분리를 시켜 보았다.
핵심 코드는 my_mod.py 소스 이지만 제네릭 하지 않고 막코딩한 느낌의 코드이지만 공개 한다.
파이썬3 소스
main.py
from my_mod import str_conv, my_regex
aa = 'aa001,aa002,aa003,ddd,aa004,bb001,bb002,bb003,aaa,ccc,bb005'
print(aa)
dict1, list1 = my_regex(aa)
get_list = str_conv(dict1)
comb_list = get_list + list1
print(','.join(comb_list))
my_mod.py
더보기
import re
def my_regex(aa):
list1 = []
dict1 = {}
inner_list = [elt.strip() for elt in aa.split(',')]
regex = re.compile(r'[a-z][a-z]\d\d\d')
for cc in inner_list:
if re.search('[a-z]+\d\d\d', cc):
k = re.search('[a-z]+', cc)[0]
v = int(re.search('\d+', cc)[0])
# print(k, v)
if k in dict1:
dict1[k].append(v)
else:
dict1[k] = [v]
else:
list1.append(cc)
return dict1, list1
def get_list(queue):
packet = []
tmp = []
v = queue.pop(0)
tmp.append(v)
while(len(queue)>0):
vv = queue.pop(0)
if v+1 == vv:
tmp.append(vv)
v = vv
else:
packet.append(tmp)
tmp = []
tmp.append(vv)
v = vv
packet.append(tmp)
ret_list = []
ret_dict = {}
for i in packet:
ret_dict['start'] = i[0]
ret_dict['end'] = i[len(i)-1]
ret_list.append(ret_dict.copy())
return ret_list
def str_conv(dict1):
result = []
for k, v in dict1.items():
vlist = get_list(v)
# print(vlist)
for vv in vlist:
start = ''
end = ''
start = str(vv['start'])
end = str(vv['end'])
if 1 == len(start):
start = '00' + start
elif 2 == len(start):
start = '0' + start
else:
pass
if 1 == len(end):
end = '00' + end
elif 2 == len(end):
end = '0' + end
else:
pass
if start != end:
result.append("{}{}~{}".format(k, start, end))
else:
result.append("{}{}".format(k, start))
# print(result)
return result
'SW' 카테고리의 다른 글
[윈도우 프로그래밍] Visual Studio 설치 후 Hello world!! 다이얼로그 (0) | 2020.04.15 |
---|---|
[javascript 자바스크립트] Prompt 를 이용하여 숫자 입력 받고 출력 하기 (0) | 2020.04.15 |
[스케줄링 알고리듬(Scheduling algorithm)] FCFS 스케줄링(First Come First Served Scheduling) 프로그램 구현 (0) | 2020.04.15 |
intelliJ Github 연결 후 저장소 생성 및 푸쉬(push) - 403 에러 (0) | 2018.10.18 |
macOS mojave 업데이트 후 JAVA 개발 환경 구축(openJDK11) (0) | 2018.10.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 웹앱
- Java
- 자바
- GCP
- 부트스트랩
- 웹앱프로그래밍
- HTML
- 클라우드
- pythonanywhere
- docker
- 웹앱 프로그래밍
- Hello World
- Cloud
- oracle
- mysql
- 오라클
- 자바스크립트
- 리눅스
- GIT
- WEB
- Visual Studio
- 도커
- 파이썬
- javascript
- nginx
- flask
- DB
- github
- 플라스크
- python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함