2014-08-28 4 views
0

연구 4 시간 후 신참 질문. 텍스트 파일에 저장된 목록을 문자열로 복원하여 목록으로 다시 바꿈

나는 문자열 형식으로 TEXTFILE 수식을 저장하는 프로그램을 작성 : 나는 그러나, 나는 문제가 원래의 형태를 회복하는 데 문제는 TEXTFILE에서 이러한 공식을 읽어

['myminus', 'IBM', 'Low', 'myplus', 'IBM', 'Close', 'WMT', 'Low'] 

.

["['myminus'", " 'IBM'", " 'Low'", " 'myplus'", " 'IBM'", " 'Close'", " 'WMT'", " 'Low']"] 

이 어떻게 3 행에 문자열을 문자열의리스트로 번역 않습니다 : - alg.string(',') 같이 - 나는 ','에 ALG 문자열을 분할

나는 엉망를 얻을 수 ? 특히 이중 따옴표를 제거하려면 어떻게해야합니까?

(그들은 역방향 폴란드어 eval 함수에 의해 나중에 사용할 수 있습니다.) 당신이 문자열이있는 경우

+0

어떤 언어입니까? – mskfisher

+0

언어는 Python 2.X입니다. – b0bm00re

+0

Pickle 또는 ast.literal_eval – dawg

답변

2

, 당신은 다시 파이썬 데이터 구조로를 설정하는 ast.literal_eval를 사용할 수 있습니다

>>> s="['myminus', 'IBM', 'Low', 'myplus', 'IBM', 'Close', 'WMT', 'Low']" 
>>> import ast 
>>> ast.literal_eval(s) 
['myminus', 'IBM', 'Low', 'myplus', 'IBM', 'Close', 'WMT', 'Low'] 

당신이 할 수있는 또한 json 또는 pickle과 같은 것을 사용하여 파이썬 데이터를 파일로 직렬화 할 수 있습니다.

>>> li=['myminus', 'IBM', 'Low', 'myplus', 'IBM', 'Close', 'WMT', 'Low'] 
>>> 
>>> import json 
>>> json.dumps(li) 
'["myminus", "IBM", "Low", "myplus", "IBM", "Close", "WMT", "Low"]' 
>>> s=json.dumps(li) 
>>> li2=json.loads(s) 
>>> li2 
[u'myminus', u'IBM', u'Low', u'myplus', u'IBM', u'Close', u'WMT', u'Low'] 

피클 : 그 데이터의 전체 인 경우

>>> import pickle 
>>> s=pickle.dumps(li) 
>>> s 
"(lp0\nS'myminus'\np1\naS'IBM'\np2\naS'Low'\np3\naS'myplus'\np4\nag2\naS'Close'\np5\naS'WMT'\np6\nag3\na." 
>>> pickle.loads(s) 
['myminus', 'IBM', 'Low', 'myplus', 'IBM', 'Close', 'WMT', 'Low'] 

마지막으로, 당신은 단지 저장하고 사용하는 CSV로 복구 할 수있는 파이썬 csv module :

여기

은 JSON입니다

import csv 

li=['myminus', 'IBM', 'Low', 'myplus', 'IBM', 'Close', 'WMT', 'Low'] 

with open('/tmp/calc.csv', 'w') as fout: 
    writer=csv.writer(fout) 
    writer.writerow(li) 

with open('/tmp/calc.csv', 'r') as fin: 
    reader=csv.reader(fin) 
    data=next(reader) 

>>> data 
['myminus', 'IBM', 'Low', 'myplus', 'IBM', 'Close', 'WMT', 'Low'] 
+0

+1은 JSON 또는 Pickle을 제안합니다. 이것이 실제로 여기서 할 수있는 올바른 방법입니다. – whereswalden

관련 문제