[英]Extract values from within strings in a list - python
我的python代码中有一个具有以下结构的列表:
file_info = ['{file:C:\\samples\\123.exe, directory:C:\\}','{file:C:\\samples\\345.exe, directory:C:\\}',...]
我只想提取列表中每个值的文件和目录值并打印出来。 使用以下代码,我能够提取目录值:
for item in file_info:
print item.split('directory:')[1].strip('}')
但是我无法找出一种提取“文件”值的方法。 以下内容不起作用:
print item.split('file:')[1].strip(', directory:C:\}')
有什么建议吗? 如果除此之外还有其他更好的方法来提取文件和目录值,那也很好。 提前致谢。
如果格式与您提供的格式完全相同,则最好使用re
:
import re
file_info = ['{file:file1, directory:dir1}', '{file:file2, directory:directory2}']
pattern = re.compile(r'\w+:(\w+)')
for item in file_info:
print re.findall(pattern, item)
或者,使用字符串replace()
, strip()
和split()
(有点hackish和脆弱):
file_info = ['{file:file1, directory:dir1}', '{file:file2, directory:directory2}']
for item in file_info:
item = item.strip('}{').replace('file:', '').replace('directory:', '')
print item.split(', ')
这两个代码段均打印:
['file1', 'dir1']
['file2', 'directory2']
如果file_info
项只是转储的json项(请注意双引号),则可以使用json
将其加载到字典中:
import json
file_info = ['{"file":"file1", "directory":"dir1"}', '{"file":"file2", "directory":"directory2"}']
for item in file_info:
item = json.loads(item)
print item['file'], item['directory']
或者, literal_eval() :
from ast import literal_eval
file_info = ['{"file":"file1", "directory":"dir1"}', '{"file":"file2", "directory":"directory2"}']
for item in file_info:
item = literal_eval(item)
print item['file'], item['directory']
这两个代码段均打印:
file1 dir1
file2 directory2
希望能有所帮助。
我会做:
import re
regx = re.compile('{\s*file\s*:\s*([^,\s]+)\s*'
','
'\s*directory\s*:\s*([^}\s]+)\s*}')
file_info = ['{file:C:\\samples\\123.exe, directory : C:\\}',
'{ file: C:\\samples\\345.exe,directory:C:\\}'
]
for item in file_info:
print '%r\n%s\n' % (item,
regx.search(item).groups())
结果
'{file:C:\\samples\\123.exe, directory : C:\\}'
('C:\\samples\\123.exe', 'C:\\')
'{ file: C:\\samples\\345.exe,directory:C:\\}'
('C:\\samples\\345.exe', 'C:\\')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.