首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到列表中的任何内容在字符串中,并确定“任何”是什么?

如何找到列表中的任何内容在字符串中,并确定“任何”是什么?
EN

Stack Overflow用户
提问于 2016-12-04 02:57:25
回答 2查看 109关注 0票数 0

我需要从用户输入中读取数据并将其解析为3部分,第一部分是行值,第二部分是条件(==,!=,>等等)。第三是比较价值。用户输入: 0=="6/1/2014 0:00:00“->因此,行为0,条件为"==”,而比较值为"6/1/2014 0:00:00“

以下是我所拥有的:

代码语言:javascript
复制
    promptList = ["0 == 6/12/16 00:00:00", "1 > 47.20"]
    for prompt in promptList:
    if any(comparator in prompt for comparator in comparatorsList):
        prompt = prompt.split(comparator)
        row = prompt[0].strip()
        condition = prompt[1].strip()
        comparator = str(comparator).strip()
        print(row, comparator, condition) #test to see print statement, not needed

但是,它说我没有定义比较器。我需要比较器知道如何拆分字符串,因为您永远不知道比较器会出现在哪里(即:0 == 0 VS. 20124 > 6/2/12 00:32:10)

如何设置我的3个变量!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-04 03:14:41

变量comparator是在生成器理解范围内定义的,并且不存在于它之外。与其使用any构造(在这里丢弃有价值的信息,即实际包含哪个比较器),不如将其展开为一个for循环:

代码语言:javascript
复制
comparatorsList = set(["==", "!=", ">", ">=", "<=", "<"])
promptList = ["0 == 6/12/16 00:00:00", "1 > 47.20"]

for prompt in promptList:
    for comparator in comparatorsList:
        if comparator in prompt:
            prompt = prompt.split(comparator)
            row = prompt[0].strip()
            condition = prompt[1].strip()
            comparator = str(comparator).strip()
            print(row, comparator, condition) 
            break

指纹:

代码语言:javascript
复制
('0', '==', '6/12/16 00:00:00')
('1', '>', '47.20')
票数 0
EN

Stack Overflow用户

发布于 2016-12-04 03:22:36

您定义了用于任何理解的comparator变量,因此它的范围仅限于此理解的范围。

你可以代替

代码语言:javascript
复制
if any(comparator in prompt for comparator in comparatorsList):

就像

代码语言:javascript
复制
comparator = next((x for x in comparatorsList if x in prompt), None)
if comparator is not None:

也可以简单地使用正则表达式。您没有为左和右值指定任何约束,因此我假设它们可以是:

代码语言:javascript
复制
import re
rv = re.match("(.*)(==|!=|>)(.*)", "6 == 2")

rv.groups()将有匹配组,第一组为左值组,第二组为比较组,第三组为右值组。您可以微调此正则表达式以限制左和右值类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40954886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档