튜플값을 인트값을로 변경하려는데 궁금한점이 있습니다.
조회수 1928회
a = [('2019-05-01',),('2019-05-02',)....(n개)] #sqlite date tuple b값처럼 수정해야할 값
b = ((2019, 5, 1),(2019, 5, 2)....(n개)) #달력 년월일 tuple 고정값 변경 안됨
for i in range(len(a)):
print(''.join(a[i]).replace('-', ','))
위에 a,b
값이 있는데 a값을 b값처럼 똑같이 만들려고합니다. 문제는 위에 값을 출력하면
2019,05,01
2019,05,02
나오는데 월 과 일 0값을 지워야하는데 `replace'로 지우면 년에있는 0값도 지워져 정규식을 사용해서 지운 후 튜플로 만들려고하니 ',' 때문에 int튜플로 묶을수가 없더군요 그래서 생각한게 년,월,일 을 따로 따로 변수3개 줘서 a = year, month, day 이런식으로 만들려고하는데 이것도 잘안되고 다른 좋은 방법을 도움 받고자 합니다.
2 답변
-
a = [('2019-05-01',),('2019-05-02',),('2019-05-03',)] b = [] for i in range(len(a)): temp = a[i][0].split("-") temp[1] = str(int(temp[1])) temp[2] = str(int(temp[2])) b = b + [(", ".join(temp),)] print(b) >>> ======= RESTART: C:/Users/USER/Desktop/aaa.py ======= [('2019, 5, 1',), ('2019, 5, 2',), ('2019, 5, 3',)]
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
윗분같이 하나씩 형변환을 해도 되지만 파이썬은 집합으로 즉 덩어리로 생각해서 프로그래밍하는 편이 더 간결하게 코드를 유지시켜 줍니다.
d1 = '2019-05-01' y, m, d = map(int, d1.split('-')) # 연월일 int 형변환후 변수에 대입 tuple(map(int, d1.split('-')) # int 형변환 결과를 바로 tuple 로 생성
chain(*a) 는 a의 튜플을 벗겨내어 flatten 처리를 한겁니다.
In [19]: a = [('2019-05-01',), ('2019-05-02',)] In [20]: list(chain(*a)) Out[20]: ['2019-05-01', '2019-05-02']
최종적으로 아래와 같이 작성할 수 있습니다.
In [43]: from itertools import chain In [44]: a = [('2019-05-01',), ('2019-05-02',)] In [45]: b = tuple(tuple(map(int, item.split('-'))) for item in chain(*a)) In [46]: b Out[46]: ((2019, 5, 1), (2019, 5, 2)) In [47]: [tuple(map(int, item.split('-'))) for item in chain(*d)] Out[47]: [(2019, 5, 1), (2019, 5, 2)]
댓글 입력