如何处理分裂中的缺失数据?

2024-04-25 01:29:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把一根绳子分成可能缺少一部分的地方。 E、 g.,"foo-bar"应拆分为"foo"和{},而{}应分成{}和{}。在

foo,bar = line.split('-',1)

适用于第一种情况,但不适用于第二种情况:

^{pr2}$

当然,我可以走很远的路:

foobar = line.split('-',1)
if len(foobar) == 2:
    foo,bar = foobar
else:
    foo,bar = foobar[0],None

但我想知道这是不是最“Python”的方式。在


Tags: noneleniffoo地方方式linebar
3条回答

对于这个确切的例子,我将使用^{}方法。在

>>> 'foo-bar'.partition('-')
('foo', '-', 'bar')
>>> 'foobar'.partition('-')
('foobar', '', '')
>>> 'foo-bar-baz'.partition('-')
('foo', '-', 'bar-baz')

对于有多个拆分但仍然是一个已知数字的一般情况,我通常检查split结果的长度,但是Martijn(毫不奇怪地)正确地认为捕捉异常也很好,如果字符串缺少分隔符是不常见的,则可能是一个更好的选择。在

使用列表理解:

i=['ff-bb','cc','dd-ss-vv']

[string+[None] if len(string)==1 else string for string in [x.split('-') for x in i]]

退货

^{pr2}$

捕捉异常:

try:
    foo, bar = line.split('-', 1)
except ValueError:
    # not enough values
    foo, bar = line, None

请注意,您需要将拆分一次以获得两个值,而不是两次。在

相关问题 更多 >