Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的字符串拆分_Python_String_List_Python 2.7 - Fatal编程技术网

python中的字符串拆分

python中的字符串拆分,python,string,list,python-2.7,Python,String,List,Python 2.7,我想以最有效的方式和最类似python的方式在python中拆分sting。 假设我有这个字符串: s = '"Jens", "kasper", "Michael"' 我如何实现以下目标: names = ["David", "Kasper", "Michael"] 意思是我想去掉花括号中的名字 使用: 安全地计算表达式节点或Unicode或Latin-1编码的 包含Python表达式的字符串。提供的字符串或节点可以是 仅由以下Python文本结构组成:字符串, 数字、元组、列表、dict

我想以最有效的方式和最类似python的方式在python中拆分sting。 假设我有这个字符串:

s = '"Jens", "kasper", "Michael"' 
我如何实现以下目标:

names = ["David", "Kasper", "Michael"]

意思是我想去掉花括号中的名字

使用:

安全地计算表达式节点或Unicode或Latin-1编码的 包含Python表达式的字符串。提供的字符串或节点可以是 仅由以下Python文本结构组成:字符串, 数字、元组、列表、dicts、boolean和None


您可以像这样拆分它:

>>> s = '"Jens", "kasper", "Michael"' 
>>> s.split(', ')
['"Jens"', '"kasper"', '"Michael"']
>>> [name.strip('"') for name in s.split(', ')]
['Jens', 'kasper', 'Michael']
您可以按如下方式删除引号:

>>> s = '"Jens", "kasper", "Michael"' 
>>> s.split(', ')
['"Jens"', '"kasper"', '"Michael"']
>>> [name.strip('"') for name in s.split(', ')]
['Jens', 'kasper', 'Michael']

<>但实际上,你应该考虑如何构造这个奇怪的字符串,并进行匹配操作,而不是试图从第一个原则构建解析器。这些是Python文本吗?JSON字符串?还有别的吗?它们是用“,”连接在一起的。连接还是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])

我想你的列表应该是Jens而不是David,对吧?把名字从花括号中去掉-你的意思是从引号中提取名字吗?你是怎么得到这个字符串的?如果这个字符串是一个Python字符串元组表示,这是正确的答案。但是,如果literal_eval恰好在一些不打算成为Python literal格式的格式上工作,那通常不是使用它的好理由。@abarnert是的,它看起来很适合OP提供的示例。但是,我同意这种格式是不寻常的,它看起来像一个带有引用的CSV,我们应该知道OP是从哪里得到它的。非常感谢。当然,这并不能神奇地将kasper大写或将Jens转换为David…如果你真的想这样做,你需要一个更完整的说明,说明你在追求什么。