2014-09-26 4 views
0

어떤 변수 x에 '123,456'이라는 문자열을 할당 할 수 있습니다. 이제이 문자열을 [1, 2, 3, ,, 4, 5, 6]과 같은 형식의 목록 (아래 블록에서 counter라고 함)으로 변환하려고합니다. 아래에 표시된 while 루프를 사용하여 문자열 indeces를 목록에 할당하려고 시도했지만 "int 객체가 항목 할당을 지원하지 않습니다."라는 오류가 계속 발생합니다. 위치 내 문제는 내가 정수에 문자열 (문자)의 인덱스를 변환하기 위해 노력하고 있다는 점이다 보인다 0파이썬에서 문자열의 인덱스를 정수로 변환하려면 어떻게해야합니까?

while position < len(x): 
    if x[position] == ',': 
     counter[position] = x[position] 
    else: 
     counter[position] = int(x[position]) 
     position += 1 

의 초기 값을가집니다. 문자열 인덱스를 정수로 변환하는 방법이 있습니까? 그렇지 않다면 내가 어떻게이 문제에 접근 할 수 있습니까? 당신이 (즉, 쉼표를 제외하고) 다음 정수로 변환하려면

+0

으로 잡습니다. 'position'이 문자열이면, n'int (position)'를 사용하여'position'을 정수로 변환 할 수 있습니다. –

+0

위치는 정수입니다. x [위치]는 실수가 아니라면 문자입니다. 문자를 정수로 변환하려고하면 오류가 발생합니다. – GnUfTw

답변

1

사항이 유사한 일을 할 수있는 list

>>> s = '123,456' 
>>> list(s) 
['1', '2', '3', ',', '4', '5', '6'] 

로 문자열을 넣어이 작업을 수행 할 수 있습니다

>>> out = [] 
>>> for x in list(s): 
...  try: 
...   out.append(int(x)) 
...  except ValueError: 
...   out.append(x) 
... 
>>> out 
[1, 2, 3, ',', 4, 5, 6] 

ValueError,의 잘못된 전환을 int

+0

그리고 목록의 각 요소를 정수로 변환 할 수 있습니까? – GnUfTw

관련 문제