我想以最有效的方式和最“类似python”的方式在python中分割一个刺痛。假设我有这个字符串:
s = '"Jens", "kasper", "Michael"'
如何实现以下列表:
names = ["David", "Kasper", "Michael"]
意思是我想去掉大括号之间的名字。
我想以最有效的方式和最“类似python”的方式在python中分割一个刺痛。假设我有这个字符串:
s = '"Jens", "kasper", "Michael"'
如何实现以下列表:
names = ["David", "Kasper", "Michael"]
意思是我想去掉大括号之间的名字。
安全地评估包含 Python 表达式的表达式节点或 Unicode 或 Latin-1 编码字符串。提供的字符串或节点只能由以下 Python 文字结构组成:字符串、数字、元组、列表、字典、布尔值和无。
>>> from ast import literal_eval
>>> s = '"Jens", "kasper", "Michael"'
>>> literal_eval(s)
('Jens', 'kasper', 'Michael')
>>> list(literal_eval(s))
['Jens', 'kasper', 'Michael']
您可以像这样拆分它:
>>> s = '"Jens", "kasper", "Michael"'
>>> s.split(', ')
['"Jens"', '"kasper"', '"Michael"']
您可以像这样去掉引号:
>>> [name.strip('"') for name in s.split(', ')]
['Jens', 'kasper', 'Michael']
但实际上,您应该考虑如何构造这个奇怪的字符串,并进行匹配操作,而不是尝试从第一原理构建解析器。这些是 Python 文字吗?JSON字符串?还有什么?', '.join
它们是与CSV 模块还是其他东西结合在一起?
让我们为您的字符串添加一个案例:
>>> s = '"Jens", "kasper", "Michael", "Jean Paul", "Bond, James"'
^^ comma
您可以使用 csv:
>>> import csv
>>> list(csv.reader([s], skipinitialspace=True))[0]
['Jens', 'kasper', 'Michael', 'Jean Paul', 'Bond, James']
或正则表达式:
>>> import re
>>> [e.group(1) for e in re.finditer(r'"([^"]+)"',s)]
['Jens', 'kasper', 'Michael', 'Jean Paul', 'Bond, James']
基于逗号拆分的解决方案不适用于嵌入的逗号:
>>> s = '"Jens", "kasper", "Michael"'
>>> [e.strip().strip('"') for e in s.split(',')]
['Jens', 'kasper', 'Michael', 'Jean Paul', 'Bond', 'James']
^^^^ wrong answer...
我认为 dawg 有最好的,但是:
stringthing = "Your string here!=-Hi!"
a = stringthing.split("=-")
print("Thing 1: " + a[0] + " Thing 2: " + a[1])