1

我有一个这样的字符串(有 n 个元素):

input = 'John, 16, random_word, 1, 6, ...'

如何将其转换为这样的列表?我想用“,”作为分隔符。

output = [John, 16, random_word, 1, 6, ...]
4

4 回答 4

6

您可以使用input.split(','),但正如其他人所指出的那样,您必须处理前导和尾随空格。可能的解决方案是:

  • 没有正则表达式:

    In [1]: s = 'John, 16, random_word, 1, 6, ...'
    
    In [2]: [subs.strip() for subs in s.split(',')]
    Out[2]: ['John', '16', 'random_word', '1', '6', '...']
    

    我在这里所做的是使用列表推导s.split(','),在其中我创建了一个列表,其元素是通过调用它们的方法从字符串组成的strip。这相当于

    strings = []
    for subs in s.split(','):
        strings.append(subs)
    print(subs)
    
  • 使用正则表达式

    In [3]: import re
    
    In [4]: re.split(r',\s*', s)
    Out[4]: ['John', '16', 'random_word', '1', '6', '...']
    

另外,尽量不要input用作变量名,因为这样会隐藏内置函数

您也可以仅spliton ', ',但您必须绝对确保逗号后始终有一个空格(考虑换行符等)

于 2012-12-13T19:55:05.063 回答
4

你的意思是output = ['John', '16', 'random_word', '1', '6', ...]?你可以像output = inpt.split(', '). 这也删除了 . 之后的空格,

于 2012-12-13T19:52:45.107 回答
1

使用拆分功能。

output = input.split(', ')
于 2012-12-14T10:37:02.403 回答
0

如果我理解正确,只需执行以下操作:

output = input.split(',')

之后您可能需要修剪每个结果字符串,因为split不关心空格。

问候, 马特

于 2012-12-13T19:49:16.920 回答