我正在学习Python,并试图找出一种有效的方法,将一个由逗号分隔的数字串标记成一个列表。格式良好的案例如我所料,但格式不太好的案例并不多。
如果我有这个:
A = '1,2,3,4'
B = [int(x) for x in A.split(',')]
B results in [1, 2, 3, 4]
这是我所期望的,但是如果字符串更像
A = '1,,2,3,4,'
如果我对B使用与上面相同的列表理解表达式,就会得到一个异常。我想我理解原因(因为有些“x”字符串值不是整数),但我认为有一种方法可以非常优雅地解析它,使字符串a的标记化工作得更直接一些,就像在C中迭代调用strtok(a,“,\n\t”)一样
为了明确我的要求;我在Python中寻找一种优雅/高效/典型的方式来拥有以下所有字符串示例:
A='1,,2,3,\n,4,\n'
A='1,2,3,4'
A=',1,2,3,4,\t\n'
A='\n\t,1,2,3,,4\n'
返回同一列表:
B=[1,2,3,4]
通过某种简洁的表达。
这个怎么样:
strip()修剪字符串中的空白,如果字符串都是空白,则将使其为空。在布尔上下文中,空字符串是“false”,因此它由列表理解的if部分过滤。
嗯,功能优度(加上一点生成器表达式):
为了充分发挥功能:
一般来说,我尽量避免使用正则表达式,但是如果你想把它们分成很多不同的部分,它们就可以工作了。试试这个:
相关问题 更多 >
编程相关推荐