【问题标题】:Print actual string found打印找到的实际字符串
【发布时间】:2014-07-11 06:54:26
【问题描述】:

我有这段代码检查是否可以在字符串“翻译”中找到列表“标记”中的单词。

Translation= words.split("Translation:",1)[1]
if any(x in Translation for x in Markers):
    print "found"

如何打印找到的实际字符串。我试过这样做

Translation= words.split("Translation:",1)[1]
if any(x in Translation for x in Markers):
    print x

但我不断收到错误消息。 Python 新手。任何帮助将不胜感激。

【问题讨论】:

  • 但我一直收到错误是哪一个?
  • any()返回True或False,你在any调用中使用的x只存在于any(..)的范围内。您不能在任何呼叫之外引用它

标签: python string list list-comprehension


【解决方案1】:

你不能用any 函数得到它,因为它返回一个布尔值。所以你需要像这样使用for 循环

for item in markers:
    if item in translation:
        print item
        break
else:
    print "Not Found"

如果你想得到所有匹配的元素,那么你可以使用列表推导,像这样

print [item for item in markers if item in translation]

作为Martijn suggested in the comments,我们可以简单地得到第一个匹配

print next((x for x in markers if x in translation), None)

如果没有匹配,则返回None

请注意,PEP-8 建议我们不要用首字母大写来命名局部变量。所以,我用小写字母命名。

【讨论】:

  • [print x for x in markers if x in translation] 呢?
  • @TimCastelijns 我们在 LC 中不能有任何语句。
  • next((x for x in markers if x in translation), None) 获得第一场比赛怎么样?
  • @MartijnPieters 是的,忘记了。谢谢 :) 也包含在答案中。
猜你喜欢
  • 2010-11-27
  • 1970-01-01
  • 2012-02-04
  • 2014-04-27
  • 2014-04-15
  • 1970-01-01
  • 2017-02-10
  • 2012-09-04
  • 1970-01-01
相关资源
最近更新 更多