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

2024-10-06 10:42:42 发布

您现在位置: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条件表达式,它将在上述ab的情况下产生相同的输出:['group1', 'group2', 'group3', 'group4']。你知道吗


Tags: 方法字符串in列表string情况条件结构
3条回答

你在编辑中几乎做到了:

def f(lst):
    return [t.strip() for t in lst[0].split(',')] if len(lst) == 1 else lst

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

>>> f(a)
['group1', 'group2', 'group3', 'group4']
>>> f(b)
['group1', 'group2', 'group3', 'group4']

使用^{}如何:

代码:

['group1, group2, group3'][0].split(', ')

测试代码:

x = ['group1, group2, group3']    
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']

可以使用^{}^{}从一个表示形式到另一个表示形式:

print('group1, group2, group3'.split(', '))
# ['group1', 'group2', 'group3']
print(', '.join(['group1', 'group2', 'group3']))
# group1, group2, group3

在函数中,可以执行以下操作:

def f(items, index, separator=', '):
    if isinstance(items, str):
        items = items.split(separator)
    return items[index]


print(f('group1, group2, group3', 1))        # group2
print(f(['group1', 'group2', 'group3'], 1))  # group2

相关问题 更多 >