【问题标题】:list value validate in python在python中验证列表值
【发布时间】:2017-06-22 03:26:06
【问题描述】:

以下输入文件有:

 info:pens-10-books-10,pens-10-books-20

我正在使用下面的 python 字典读取这个输入文件。

 d = {}
 with open('inputfile.txt') as f:
    for line in f:
    if ":" not in line:
        continue
    key, value = line.strip().split(":", 1)
    d[key] = value
for key, value in  d.iteritems():
    if key == 'info':
        goods = value.split(",")

现在我需要帮助来验证所提供的输入。商品申报为清单,因此我需要验证清单值。

第一个八位位组必须是字母,第二个八位位组必须是数字,第三个八位位组必须是字母表,第四个八位位组必须是数字。如果包含超过 4 个八位字节,则无效输入。下面是例子

pens-10-books-10 --input valid
apples-1-cakes-10 --input valid
10-aplpes-10cakes --not valid input (as number contains at first octet)
pens-10-books-20-apples-10 -- not valid input (more than 4 octets)

【问题讨论】:

  • 您只是在寻找正则表达式解决方案吗?
  • @open-source 可能不是,但正则表达式似乎是这里最好和最简单的选择。

标签: python regex python-2.7 validation


【解决方案1】:

您可以使用正则表达式来验证您的输入是否与您的模式匹配:

>>> import re
>>> 
>>> def validate(string):
        if re.match(r'^[a-zA-Z]+\-\d+\-[a-zA-Z]+\-\d+$', string):
            return True
        return False

>>> validate('pens-10-books-10')
True
>>> validate('apples-1-cakes-10')
True
>>> validate('10-aplpes-10cakes')
False
>>> validate('pens-10-books-20-apples-10')
False
>>> 

要将其与您的 goods 列表一起使用,您可以遍历每个元素测试并显示是否有效:

>>> goods = ['pens-10-books-10', 'apples-1-cakes-10',
         '10-aplpes-10cakes', 'pens-10-books-20-apples-10']
>>> 
>>> for string in goods:
    print(validate(string))


True
True
False
False
>>> 

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多