说我有这个字符串:
"hello":"noun":"a greeting";"hello":"verb":"the;action;of;greeting"
我怎样才能使它成为string.split(&#34 ;;")或string.split(":")会忽略引号中的任何字符?
谢谢, PM
答案 0 :(得分:3)
如果您无法获得更清晰的输入,我建议您使用正则表达式并使用list
创建tuple
findall()
个:< / p>
>>> import re
>>> mystring = '"hello":"noun":"a greeting";"hello":"verb":"the;action;of;greeting"'
>>> result = re.findall(r'"(.+?)":"(.+?)":"(.+?)"', mystring)
>>> for item in result:
... print(*item)
...
hello noun a greeting
hello verb the;action;of;greeting
您可以使用str.format()
格式化输出:
>>> for item in result:
... print('{} - {}, {}'.format(*(part.replace(';', ' ') for part in item)))
...
hello - noun, a greeting
hello - verb, the action of greeting
答案 1 :(得分:0)
如果所有字符串都在quoatation标记内,则您的问题不会100%清除。无论如何,这应该工作。它不会删除字符串周围的引号(如果您愿意,可以在以后执行此操作)。
In [20]: [x for x in re.split(r'(:|;|".*?")', s) if x not in [":",";",""]]
Out[20]:
['',
'"hello"',
'"noun"',
'"a greeting"',
'"hello"',
'"verb"',
'"the;action;of;greeting"']