2016-08-06 2 views
-3

우리가 어떻게 따옴표없이
파이썬 변환 문자열은

[[0.0034596999 0.0034775001 0.0010091923]] 


['[0.0034596999 0.0034775001 0.0010091923]'] 

을 변환 할 수 있습니다 나열합니다. 나는 eval, list, tuple, replace 및 s.strip()을 사용해 보았지만 아무것도 작동하지 않는 것 같다. 사람이

+2

입력 문자열 또는 문자열을 포함하는 목록입니까? 결과가 작은 따옴표가없는 문자열이거나 결과가 부동 소수점 값을 포함하는 목록을 포함하는 목록인지 또는 다른 것을 의미합니까? 첫 번째 경우,'replace()'메소드로 모든 따옴표를 제거하십시오. 두 번째 경우 목록의 일반적인 인쇄에는 값 사이에 쉼표가 포함됩니다. –

+2

데이터의 출처는 무엇입니까? 나중에 그걸 고치는 게 어때요? –

+0

문자열이나 목록입니까? –

답변

-2
lst = ['[0.0034596999 0.0034775001 0.0010091923]'] 
item = ''.join(lst) 
final_str = "[" + item + "]" 
print (final_str) 
+3

이 코드 단편은 문제를 해결할 수 있지만, [설명 포함] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)은 게시물의 품질을 향상시키는 데 정말로 도움이됩니다. 앞으로 독자의 질문에 답하고 있으며 코드 제안의 이유를 알지 못할 수도 있습니다. – MattDMo

0

사용 .split()와 .replace()에 도움이 될 수 있습니다 당신이 목록을 원하는 경우

b = ['[0.0034596999 0.0034775001 0.0010091923]'] 
b = b[0].split(' ') 
a = array([[float(x.replace('[','').replace(']','')) for x in b]]) 
print a 
[[ 0.0034597 0.0034775 0.00100919]] 

배열()를 사용하지 마십시오.

2

사용 replaceeval : 물론

>>> x = ['[0.0034596999 0.0034775001 0.0010091923]'] 
>>> x = [eval(x[0].replace(' ',','))] 
>>> x 
[[0.0034596999, 0.0034775001, 0.0010091923]] 

당신은 단순히 numpy 배열로 변환 할 수 있습니다.

0

이유는 eval이 문자열로 간주되는 문자열이 유효한 목록 표현이 아니기 때문입니다. 쉼표가 포함되어 있지 않습니다.

대괄호를 사용하고 나머지 문자열을 숫자를 나타내는 별도의 문자열로 분리 한 다음 각 문자열을 숫자로 변환하여 실제 목록으로 변환 할 수 있습니다. 코드는 다음과 같습니다.

data = ['[0.0034596999 0.0034775001 0.0010091923]'] 

s = data[0] 
for ch in "[]": # remove barckets 
    s = s.replace(ch, '') 

# splitting and converting to a list of floats 
lst = [float(x) for x in s.split()]