2017-04-07 76 views
0

当我在一个txt文件这样写着:打开项目从一个字符串列表中

with open("sample.txt") as f: 
content = f.readlines() 
for row in content: 
    print(row) 

我有以下输入:

['k'], ['m'] 

我想变成这样:

[k, m] 

因此,因此我尝试

with open("sample.txt") as f: 
content = f.readlines() 
for row in content: 
    items = items.replace('\'', '') for item in items 
    row_analyze = ','.join(items) 

然而,这给了我:

[,,k,,],,,[,,m,,], 

任何思考我做错了什么在这里?

+2

什么数据真的包含在文件中? –

+0

'items = items.replace('\'','')for item in items'没有意义。你的意思是'items = [item.replace('\'','')for item in row]'? –

+0

回过头来,''sample.txt''从哪里来?也许你可以通过'pickle'或者'json'模块来避免这个中间文件或者把它作为python对象正确保存 –

回答

0

刺痛['k'], ['m'],实际上代表名单,你可以简单地将其转换为一个Python元组对象使用ast.literal_eval()功能的元组,那么连锁使用itertools.chain()功能列表:

In [1]: s = "['k'], ['m']" 

In [2]: import ast 

In [3]: ast.literal_eval(s) 
Out[3]: (['k'], ['m']) 

In [4]: from itertools import chain 

In [6]: list(chain.from_iterable(ast.literal_eval(s))) 
Out[6]: ['k', 'm'] 
+0

请注意,OP似乎希望''k,m]'的输出没有''' –

0

好像你row是字符串"['k'], ['m']"。如果您想将其转换为"[k, m]",则一些简单的replace语句就足够了。首先,删除',但接着用,而不是join字符串中的字符,用,替换剩下的] ,[

>>> row = "['k'], ['m']" 
>>> row.replace("'", '') 
'[k], [m]' 
>>> row.replace("'", "").replace("], [", ", ") 
'[k, m]' 
相关问题