[python] 파이썬에서 문자열을 정수로 변환하는 방법은 무엇입니까?

다음과 같이 MySQL 쿼리의 튜플 튜플이 있습니다.

T1 = (('13', '17', '18', '21', '32'),
      ('07', '11', '13', '14', '28'),
      ('01', '05', '06', '08', '15', '16'))

모든 문자열 요소를 정수로 변환하고 목록 목록에 다시 넣고 싶습니다.

T2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]]

나는 그것을 달성하려고했지만 eval아직 괜찮은 결과를 얻지 못했습니다.



답변

int()문자열을 정수 값으로 변환하는 Python 표준 내장 함수입니다. 인수로 숫자를 포함하는 문자열로 호출하고 정수로 변환 된 숫자를 리턴합니다.

print (int("1") + 1)

위의 내용이 인쇄 2됩니다.

목록의 구조, T1 (단순히 목록을 포함하고 한 수준 만 포함)을 알고 있다면 Python 2 에서이 작업을 수행 할 수 있습니다.

T2 = [map(int, x) for x in T1]

파이썬 3에서 :

T2 = [list(map(int, x)) for x in T1]


답변

목록 이해 로이 작업을 수행 할 수 있습니다.

T2 = [[int(column) for column in row] for row in T1]

내부 목록 이해 ( [int(column) for column in row]) listintint10 진수 문자열과 같은 일련의 사용 가능한 객체로부터의를 row만듭니다. 외부 목록 이해 ( [... for row in T1]))는의 각 항목에 적용된 내부 목록 이해 결과 목록을 작성합니다 T1.

행에 변환 할 수없는 객체가 포함 된 행이 있으면 코드 스 니펫이 실패합니다. int . 10 진이 아닌 문자열을 포함하는 행을 처리하려면 더 똑똑한 기능이 필요합니다.

행의 구조를 알고 있으면 내부 목록 이해를 행의 함수 호출로 바꿀 수 있습니다. 예 :

T2 = [parse_a_row_of_T1(row) for row in T1]


답변

오히려 이해력있는 목록 만 사용하는 것이 좋습니다.

[[int(y) for y in x] for x in T1]


답변

int( )put 대신 put float( )을 사용하면 정수와 함께 소수점을 사용할 수 있습니다.


답변

나는 지금까지 모든 사람의 대답에 동의 할 것이지만 문제는 모든 정수를 가지고 있지 않으면 충돌 할 것이라는 것입니다.

정수가 아닌 사람을 제외하려면

T1 = (('13', '17', '18', '21', '32'),
      ('07', '11', '13', '14', '28'),
      ('01', '05', '06', '08', '15', '16'))
new_list = list(list(int(a) for a in b) for b in T1 if a.isdigit())

이것은 실제 숫자 만 산출합니다. 직접 목록 이해를 사용하지 않는 이유는 목록 이해가 내부 변수를 누출하기 때문입니다.


답변

T3=[]

for i in range(0,len(T1)):
    T3.append([])
    for j in range(0,len(T1[i])):
        b=int(T1[i][j])
        T3[i].append(b)

print T3


답변

이 시도.

x = "1"

x는 주위에 따옴표가 있기 때문에 문자열이지만 숫자가 있습니다.

x = int(x)

x에는 숫자 1이 있으므로 정수로 바꿀 수 있습니다.

문자열이 숫자인지 확인하려면이 작업을 수행 할 수 있습니다.

def is_number(var):
    try:
        if var == int(var):
            return True
    except Exception:
        return False

x = "1"

y = "test"

x_test = is_number(x)

print(x_test)

x가 숫자이므로 IDLE True로 인쇄해야합니다.

y_test = is_number(y)

print(y_test)

y는 숫자가 아니기 때문에 IDLE False로 인쇄해야합니다.