Python 函数中输入字符串的灵活拆分

在 Python 中,转换此结构的最优雅方式是什么:


['group1, group2, group3']

进入这个结构:


['group1', 'group2', 'group3']

并可能回来。


需要的是一个函数,它可以采用逗号分隔值的字符串列表(第一种情况)或相同值的字符串列表(第二种情况),并将它们作为一个和相同的:字符串列表处理。


在伪代码中:


x = ['group1, group2, group3']

y = ['group1', 'group2', 'group3']


f(x) <==> f(y)    <- equivalent behavior

此外,如果split()按照建议使用:


有没有一种方法,使分隔空间不敏感或有条件或正则表达式:我想获得的['group1', 'group2', 'group3']结果在任一['group1, group2, group3']或者['group1,group2,group3']甚至该['group1, group2,group3']为输入(或它们的组合)?


再澄清一点:


>>> single_string = False

>>> a = ['group1', 'group2', 'group3','group4']

>>> [t.strip() for t in [a][0].split(',')] if single_string else a

['group1', 'group2', 'group3', 'group4']

>>> single_string = True

>>> b = ['group1,group2, group3,  group4']

>>> [t.strip() for t in [b][0].split(',')] if single_string else b

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

AttributeError: 'list' object has no attribute 'split'

>>>

基本上,我正在寻找最优雅的 Python 条件表达式,它会在以下情况a和b以上情况下产生相同的输出:['group1', 'group2', 'group3', 'group4'].


哆啦的时光机
浏览 240回答 3
3回答

凤凰求蛊

你几乎就在你的编辑中:def f(lst):&nbsp; &nbsp; return [t.strip() for t in lst[0].split(',')] if len(lst) == 1 else lst>>> a = ['group1', 'group2', 'group3','group4']>>> b = ['group1,group2, group3,&nbsp; group4']>>> f(a)['group1', 'group2', 'group3', 'group4']>>> f(b)['group1', 'group2', 'group3', 'group4']

汪汪一只猫

您可以使用splitandjoin从一种表示到另一种表示:print('group1, group2, group3'.split(', '))# ['group1', 'group2', 'group3']print(', '.join(['group1', 'group2', 'group3']))# group1, group2, group3在一个函数中,你可以这样做:def f(items, index, separator=', '):&nbsp; &nbsp; if isinstance(items, str):&nbsp; &nbsp; &nbsp; &nbsp; items = items.split(separator)&nbsp; &nbsp; return items[index]print(f('group1, group2, group3', 1))&nbsp; &nbsp; &nbsp; &nbsp; # group2print(f(['group1', 'group2', 'group3'], 1))&nbsp; # group2

UYOU

如何使用split():代码:['group1, group2, group3'][0].split(', ')测试代码:x = ['group1, group2, group3']&nbsp; &nbsp;&nbsp;print(x[0].split(', '))结果:['group1', 'group2', 'group3']返回:返回使用 str.join()y = x[0].split(', ')print(y)xx = [', '.join(y)]print(xx)结果:['group1', 'group2', 'group3']['group1, group2, group3']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python