python 根据所选值的两侧是否存在数据,接受要追加到列表/字典的输入

cedebl8k  于 2022-12-17  发布在  Python
关注(0)|答案(2)|浏览(135)

我正在尝试创建一个列表(或字典,不确定哪个更合适),其中包含我输入的值。如果它遵循正确的格式,即两个数字以“;“(123;456; 1334; 451等),然后拆分这两个数字,我该怎么做呢?newlist = [x.split(';') for x in list if x]是我做的,但是输出是[['123', '456'], ['1334', '451'],从某种意义上说是正确的,但是如果我只输入123;;,它会被接受。
任何帮助都将不胜感激。

nnsrf1az

nnsrf1az1#

您可以在列表解析中添加一个检查,以将if x替换为if len(x.split('::')) == 2。这将只包括分隔符两侧都有值的元素。

zu0ti5jz

zu0ti5jz2#

要拒绝例如"789;;abc",请使用.findall()

import re
from pprint import pp

s = "789;;abc apple 123;;101 banana 122;;324 cherry 090;;089 date"

two_nums_re = re.compile(r"(\d+);;(\d+)")
pp(two_nums_re.findall(s), width=16)

产生:

[('123', '101'),
 ('122', '324'),
 ('090', '089')]

如果需要,您可以轻松地替换替代分隔符。

>>> " ".join(f"{a}::{b}" for a, b in two_nums_re.findall(s))
'123::101 122::324 090::089'

相关问题