擅长:python、mysql、java
<pre><code>import collections
s = '''Write1 [1.0]
Write1 [12.0]
Write1 ['C:/Users/san/Modeler/']
Write1 ['png']
Write1 ['rgb']
Write1 [True]
Write2 [1.0]
Write2 [1.0]
Write2 ['']
Write2 [' ']
Write2 ['rgb']
Write2 [False]'''
d = collections.defaultdict(list)
for line in s.split('\n'):
print(line)
key, val = line.split(' ', 1)
d[key].append(val[1:-1])
print(d)
</code></pre>
<p>显然,如果你有一个文本文件而不是一个字符串,你应该用以下内容替换for循环:</p>
<pre><code>with open('mystuff.txt', 'r') as f:
for line in f:
</code></pre>
<p>如果您想实际计算方括号内的值(因此您得到的是<code>1.0</code>的浮点值而不是字符串<code>'1.0'</code>,字符串<code>'png'</code>而不是字符串<code>"'png'"</code>,等等),您需要知道它们所用的语言并对其进行解析。看起来它们是Python的一个子集,每个元素要么是没有转义符的单引号字符串文本,要么是非指数格式的浮点文本,要么是布尔文本,但我不会假设在不知道值来自何处的情况下(当然我也不会在不知道值来自何处的情况下调用<code>eval</code>,因为这样有人就可以在文本文件中插入<code>os.system('rm -rf /')</code>,然后你就可以对其进行评估。你知道吗</p>