经过四个小时的研究后,新手问题。
我编写了一个程序,以字符串格式在文本文件中保存公式:
['myminus', 'IBM', 'Low', 'myplus', 'IBM', 'Close', 'WMT', 'Low']
但是,当我从文本文件中读取这些公式时,我无法以原始形式恢复它们。
当我在“,
”上拆分alg字符串时 - 就像在alg.string(',')
中一样 - 我弄得一团糟:
["['myminus'", " 'IBM'", " 'Low'", " 'myplus'", " 'IBM'", " 'Close'", " 'WMT'", " 'Low']"]
如何获取第3行中的字符串并转换为字符串列表?特别是,我如何摆脱双引号?
(它们以后用于反向波兰评估功能。)
答案 0 :(得分:2)
如果您有一个字符串,可以使用ast.literal_eval将其转换回Python数据结构:
>>> 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之类的内容将Python数据序列化到文件中。
这是json:
>>> 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']
最后,如果这是您的数据的全部,您可以使用Python csv module保存并恢复为csv:
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']