Python 使用带有列出列表的for/in测试

Python 使用带有列出列表的for/in测试,python,list,loops,replace,Python,List,Loops,Replace,我一直在尝试检查用户提交的字符串是否包含某个子字符串,并在打印回复时替换它们 list_in_list = [["I", "you"], ["We", "Us"], ["Her", "Him"]] 我一直在使用以下代码测试这些值是否作为调试响应: print [row[0] for row in list_in_list] in reply 其中reply是用户输入的字符串 但是,它返回此错误: TypeError: 'in <string>' requires string a

我一直在尝试检查用户提交的字符串是否包含某个子字符串,并在打印回复时替换它们

list_in_list = [["I", "you"], ["We", "Us"], ["Her", "Him"]]
我一直在使用以下代码测试这些值是否作为调试响应:

print [row[0] for row in list_in_list] in reply
其中reply是用户输入的字符串

但是,它返回此错误:

TypeError: 'in <string>' requires string as left operand, not list

其中x=执行的循环数量,但我对如何编码感到困惑。

您的意思是:

print [row[0] for row in list_in_list if row[0] in reply]
这将为您提供第一列中的值,但前提是它们在回复中为
。例如:

>>> list_in_list = [["I", "you"], ["We", "Us"], ["Her", "Him"]]
>>> reply = "I like cake"
>>> print [row[0] for row in list_in_list if row[0] in reply]
['I']
>>> reply = "We met Her yesterday"
>>> print [row[0] for row in list_in_list if row[0] in reply]
['We', 'Her']

你是说:

print [row[0] for row in list_in_list if row[0] in reply]
这将为您提供第一列中的值,但前提是它们在回复中为
。例如:

>>> list_in_list = [["I", "you"], ["We", "Us"], ["Her", "Him"]]
>>> reply = "I like cake"
>>> print [row[0] for row in list_in_list if row[0] in reply]
['I']
>>> reply = "We met Her yesterday"
>>> print [row[0] for row in list_in_list if row[0] in reply]
['We', 'Her']

要测试
reply
中是否有任何值,可以执行以下操作

print any(row[0] in reply for row in list_in_list)
替换
reply中的所有值

for row in list_in_list:
    reply = reply.replace(row[0], row[1])
print reply
回应你的评论

reply = "This is a test I We Her"
#rw = replace_with
rw = {"I":"You", "We":"Us", "Her":"Him"}

reply = " ".join([rw[word] if word in rw else word for word in reply.split()])

print reply

取决于输入的复杂程度,您可以考虑使用正则表达式或查看自然语言处理(用于处理收缩等)。

< P>以测试是否有任何值在<代码>答复< /代码>中,您可以做一些类似

的事情。
print any(row[0] in reply for row in list_in_list)
替换
reply中的所有值

for row in list_in_list:
    reply = reply.replace(row[0], row[1])
print reply
回应你的评论

reply = "This is a test I We Her"
#rw = replace_with
rw = {"I":"You", "We":"Us", "Her":"Him"}

reply = " ".join([rw[word] if word in rw else word for word in reply.split()])

print reply

取决于输入的复杂程度,您可能会考虑使用正则表达式或查看自然语言处理(用于处理收缩等)。

您期待的代码> [ListOnIn列表中的行[0 ] ]在答复< /代码>中做什么?我希望它返回一个布尔值。您期待什么“代码> [行] [0 ]。对于回复中的列表中的行_in_list]to do
我希望它返回一个布尔值good response,但它不断替换字符串中的'I'并替换它们。例如,“这是一个测试”->“Thyous yous a test”。答案很好,但它一直在替换字符串中的'I's find'并替换它们。例如,“这是一个测试”->“这是一个测试”。