Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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_Mysql_Database_Text_Phpmyadmin - Fatal编程技术网

如何使用;在;在python中定义多个文本的条件

如何使用;在;在python中定义多个文本的条件,python,mysql,database,text,phpmyadmin,Python,Mysql,Database,Text,Phpmyadmin,我想从我的状态中得到正确的结果,这是我的状态 这是我的数据库 这是我的代码: 我的定义文本 #define country = ('america','indonesia', 'england', 'france') city = ('new york', 'jakarta', 'london', 'paris') c1="Country" c2="City" c3="<blank>" 我在这种情况下得到了错误的结果,就像这样 有什么解决方案可以让这段代码工作吗?当使用“in

我想从我的状态中得到正确的结果,这是我的状态

这是我的数据库

这是我的代码:

我的定义文本

#define
country = ('america','indonesia', 'england', 'france')
city = ('new york', 'jakarta', 'london', 'paris')

c1="Country"
c2="City"
c3="<blank>"
我在这种情况下得到了错误的结果,就像这样


有什么解决方案可以让这段代码工作吗?当使用“in”时仅包含1个文本时,它就可以工作,但本例定义了如此多的文本条件。

如果我正确理解了您的意思,您需要

text = "i was born in paris"
country = ('america','indonesia', 'england', 'france')
city = ('new york', 'jakarta', 'london', 'paris')

def check(text):
    for i in country:
        if i in text.lower():
            return "Country"
    for i in city:
        if i in text.lower():
            return "City"
    return "<blank>"

print(check(text))
print(check("I dnt like vacation in america"))

你最好使用字典。我假设文本是一个列表:

dict1 = {
    "countries" : ['america','indonesia', 'england', 'france'],
    "city" : ['new york', 'jakarta', 'london', 'paris']
}

for x in text:
    for y in dict1['countries']:
        if y in x:
            print 'country: ' + x
    for z in dict1['city']:
        if z in x:
            print 'city: ' + x

首先,检查您正在测试的内容

>>> country = ('america','indonesia', 'england', 'france')
>>> city = ('new york', 'jakarta', 'london', 'paris')
>>>
>>> c1="Country"
>>> c2="City"
>>> c3="<blank>"
我们看看能不能找到一个国家

>>> 'america' in str(country)
True
对!!不幸的是,像上面这样一个简单的字符串测试,除了需要将列表不必要地转换为字符串之外,还可以发现不需要的东西

>>> "ca', 'in" in str(country)
True
如果右侧的字符串包含左侧的子字符串,则中的字符串测试为true。但是列表测试中的
是不同的,当测试列表包含左侧的值作为元素时,该测试为真

>>> 'america' in country
True
很好!已经摆脱了“奇怪的其他比赛”的错误吗

看来是这样。但是,使用列表包含测试需要检查输入字符串中的每个单词,而不是整个字符串

>>> "I don't like to vacation in america" in country
False
上面的内容与您现在所做的类似,但测试的是列表元素,而不是作为字符串的列表。此表达式生成输入中的单词列表

>>> [word for word in "I don't like to vacation in america".split()]
['I', "don't", 'like', 'to', 'vacation', 'in', 'america']
请注意,在分割输入时,您可能必须比我更小心。在上面的例子中,
“america,steve”
拆分时会给出
[“america”,“steve”]
,两个词都不匹配

any
函数对表达式序列进行迭代,在序列的第一个True成员处返回
True
(如果未找到此类元素,则返回
False
)。(这里我使用生成器表达式而不是列表,但生成了相同的iterable序列)

对于额外的分数(这是留给读者的练习),你可以写 一个包含两个参数、一个句子和可能匹配项列表的函数, 如果列表中存在句子中的任何单词,则返回True。然后您可以使用两个不同的函数调用来处理国家和地区 城市


通过使用集合而不是列表,您可以在某种程度上加快速度,但原则是一样的。

谢谢,先生,这真的很有帮助。它还可以处理数据库中的文本@实际上,我在我的真实项目中也使用了文本挖掘。ofc有一种从数据库中分割文本的标记化。但还是没用,先生。但是谢谢你的回答,我很感激,谢谢你的回答,它几乎没有修改。与拉凯什爵士的答案几乎相同,事实上,你们两人的答案都有相同的方法,谢谢@RTHOMA529爵士
>>> 'america' in country
True
>>> "ca', 'in" in country
False
>>> "I don't like to vacation in america" in country
False
>>> [word for word in "I don't like to vacation in america".split()]
['I', "don't", 'like', 'to', 'vacation', 'in', 'america']
>>> any(word in country for word in "I don't like to vacation in america".split())
True