我知道有许多关于解析逗号分隔值的其他帖子,但我找不到分割键值对并处理引用逗号的帖子.
我有这样的字符串:
age=12,name=bob,hobbies="games,reading",phrase="I'm cool!"
Run Code Online (Sandbox Code Playgroud)
我希望得到这个:
{
'age': '12',
'name': 'bob',
'hobbies': 'games,reading',
'phrase': "I'm cool!",
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用shlex这样的:
lexer = shlex.shlex('''age=12,name=bob,hobbies="games,reading",phrase="I'm cool!"''')
lexer.whitespace_split = True
lexer.whitespace = ','
props = dict(pair.split('=', 1) for pair in lexer)
Run Code Online (Sandbox Code Playgroud)
麻烦的是shlex将hobbies条目分成两个标记,即hobbies="games和reading".有没有办法让双引号考虑在内?或者我可以使用另一个模块吗?
编辑:修正了拼写错误 whitespace_split
编辑2:我不喜欢使用shlex.正则表达式也很好,但我不知道如何处理匹配的引号.
我正在尝试找到或实现一个简单的解决方案,可以按顺序排队Linux shell命令,以便一次执行一个.以下是标准:
最初我认为at命令可以做我想要的,但唯一的事情是它不会按顺序执行命令.
我正在考虑使用以下部分在python中实现我自己的解决方案:
fcntl锁定文件上的模块编写python脚本,以确保只运行1个脚本实例听起来这听起来有用吗?我不知道如何处理的唯一竞争条件是当脚本的第一个实例检查目录并看到它是空的时,在解锁锁定文件之前,新命令排队并调用脚本的新实例.当新脚本看到文件被锁定时,它将退出.然后原始脚本将解锁文件并退出.
有什么东西已经做到了,所以我不必自己实现吗?