Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用正则表达式将输入与集合进行比较?_Python_Regex - Fatal编程技术网

Python 如何使用正则表达式将输入与集合进行比较?

Python 如何使用正则表达式将输入与集合进行比较?,python,regex,Python,Regex,我想要一个正则表达式python代码来: 1) 输入字符 2) 以所有小写字母输出字符 3) 在python集中比较此输出 我对正则表达式一窍不通。何必麻烦呢 >>> 'FOO'.lower() in set(('foo', 'bar', 'baz')) True >>> 'Quux'.lower() in set(('foo', 'bar', 'baz')) False 为什么要麻烦 >>> 'FOO'.lower() in set(

我想要一个正则表达式python代码来:

  • 1) 输入字符
  • 2) 以所有小写字母输出字符
  • 3) 在python集中比较此输出
我对正则表达式一窍不通。

何必麻烦呢

>>> 'FOO'.lower() in set(('foo', 'bar', 'baz'))
True
>>> 'Quux'.lower() in set(('foo', 'bar', 'baz'))
False
为什么要麻烦

>>> 'FOO'.lower() in set(('foo', 'bar', 'baz'))
True
>>> 'Quux'.lower() in set(('foo', 'bar', 'baz'))
False

在多次谷歌搜索之后,我尝试了一个错误,创建了一个解决方案,可以将多个单词从输入的字符中分离出来

import re

keywords = ('cars', 'jewelry', 'gas')
pattern = re.compile('[a-z]+', re.IGNORECASE)
txt = 'GAS, CaRs, Jewelrys'

keywords_found = pattern.findall(txt.lower())

n = 0

for i in keywords_found:
    if i in keywords:
        print keywords_found[n]
    n = n + 1

在多次谷歌搜索之后,我尝试了一个错误,创建了一个解决方案,可以将多个单词从输入的字符中分离出来

import re

keywords = ('cars', 'jewelry', 'gas')
pattern = re.compile('[a-z]+', re.IGNORECASE)
txt = 'GAS, CaRs, Jewelrys'

keywords_found = pattern.findall(txt.lower())

n = 0

for i in keywords_found:
    if i in keywords:
        print keywords_found[n]
    n = n + 1

您的自我回答最好使用
集合
而不是循环

使用
i
作为文本变量,使用
n
作为索引是非常违反直觉的。找到的关键字是一个用词不当的词

试试这个:

>>> import re
>>> keywords = set(('cars', 'jewelry', 'gas'))
>>> pattern = re.compile('[a-z]+', re.IGNORECASE)
>>> txt = 'GAS, CaRs, Jewelrys'
>>> text_words = set(pattern.findall(txt.lower()))
>>> print "keywords:", keywords
keywords: set(['cars', 'gas', 'jewelry'])
>>> print "text_words:", text_words
text_words: set(['cars', 'gas', 'jewelrys'])
>>> print "text words in keywords:", text_words & keywords
text words in keywords: set(['cars', 'gas'])
>>> print "text words NOT in keywords:", text_words - (text_words & keywords)
text words NOT in keywords: set(['jewelrys'])
>>> print "keywords NOT in text words:", keywords - (text_words & keywords)
keywords NOT in text words: set(['jewelry'])

您的自我回答最好使用
集合
而不是循环

使用
i
作为文本变量,使用
n
作为索引是非常违反直觉的。找到的关键字是一个用词不当的词

试试这个:

>>> import re
>>> keywords = set(('cars', 'jewelry', 'gas'))
>>> pattern = re.compile('[a-z]+', re.IGNORECASE)
>>> txt = 'GAS, CaRs, Jewelrys'
>>> text_words = set(pattern.findall(txt.lower()))
>>> print "keywords:", keywords
keywords: set(['cars', 'gas', 'jewelry'])
>>> print "text_words:", text_words
text_words: set(['cars', 'gas', 'jewelrys'])
>>> print "text words in keywords:", text_words & keywords
text words in keywords: set(['cars', 'gas'])
>>> print "text words NOT in keywords:", text_words - (text_words & keywords)
text words NOT in keywords: set(['jewelrys'])
>>> print "keywords NOT in text words:", keywords - (text_words & keywords)
keywords NOT in text words: set(['jewelry'])


为什么需要正则表达式?这个集合是一组单词还是字符串中出现的所有字符的集合,还是其他的?您将此输入与什么进行比较?概述您的问题,我们可能会提供比您的解决方案更好的解决方案。编辑是一个关键字系统,但我认为我不需要正则表达式。您为什么需要正则表达式?这个集合是一组单词还是字符串中出现的所有字符的集合,还是其他的?您将此输入与什么进行比较?概述您的问题,我们可能会给出比您的更好的解决方案。编辑是一个关键字系统,但我认为我不需要正则表达式。@Alex:有一个疑问词并不一定会使它成为一个问题。谢谢Alex,这就足够了。不过,我仍将继续编写正则表达式版本。@IgnacioVazquez Abrams抱歉,当我读到它时,它听起来像是一个问题。@Wolfe博士感谢Ignacio,他回答了你的问题,而不是我:)@Alex:有一个疑问词并不一定会让它成为一个问题。谢谢Alex,现在就足够了。不过,我仍将继续编写正则表达式版本。@IgnacioVazquez Abrams抱歉,当我读到它时听起来像是一个问题。@DrWolfe感谢Ignacio,他回答了你的问题,不是我:)谢谢,今天晚些时候我会试试这个。@DrWolfe:注意,
关键字
也应该是一个集合,而不是元组,为了提高效率——重读伊格纳西奥的答案。谢谢,我今天晚些时候会试试。@DrWolfe:注意,
关键字
也应该是一个集合,而不是一个元组,为了提高效率——重读伊格纳西奥的答案。