Python从列表中的子字符串打印字符串 我是Python的新手。考虑一下我有一个列表:代码> [ Python’,'java','Rub' ] < /C> >/P>

Python从列表中的子字符串打印字符串 我是Python的新手。考虑一下我有一个列表:代码> [ Python’,'java','Rub' ] < /C> >/P>,python,Python,我有一个文本文件: jrubyk knwdjavawe weqkpythonqwe 1ruby.e 预期产出: ruby java python ruby 我需要打印列表中隐藏的字符串作为子字符串。 有没有办法做到这一点?暴力手段是: hidden_strings = ['python','java','ruby'] with open('path/to/textfile/as/in/example.txt') as infile: for line in infile:

我有一个文本文件:

jrubyk
knwdjavawe
weqkpythonqwe
1ruby.e
预期产出:

ruby
java
python
ruby
我需要打印列表中隐藏的字符串作为子字符串。
有没有办法做到这一点?

暴力手段是:

hidden_strings = ['python','java','ruby']
with open('path/to/textfile/as/in/example.txt') as infile:
    for line in infile:
        for hidden_string in hidden_strings:
            if hidden_string in line:
                print(hidden_string)
当我想从较大的字符串中删除某些子字符串时,我倾向于使用。这里有一个不雅观但可读的方法来做到这一点

import re

python_matcher = re.compile('python')
java_matcher = re.compile('java')
ruby_matcher = re.compile('ruby')

hidden_text_list = open('hidden.txt', 'r').readlines()

for line in hidden_text_list:
    python_matched = python_matcher.search(line)
    java_matched = java_matcher.search(line)
    ruby_matched = ruby_matcher.search(line)

    if python_matched:
        print python_matched.group()
    elif java_matched:
        print java_matched.group()
    elif ruby_matched:
        print ruby_matched.group()

如果你没有一个数据库或一个参考资料,因为你正在与你的话,你期待输出。如果你这样做了,那就没有意义了。这样做不需要文件。只需迭代项目并打印即可them@ShashankAgarwal也许他什么也做不了。不管怎么说,他想做的事除了练习编程语言外没有任何用处。我已经修改了问题中的示例输入,以明确问题的意义。他有一个隐藏单词的列表和一个包含gobble dee-gook的文本文件,其中包含隐藏单词。他试图从咳嗽“加密”文本文件中提取隐藏的单词。但是,如果你已经有了这些单词,为什么要搜索文件中的单词呢?@AdamSmith?@wonderwhy“why”在这里不是一个有效的问题,但他似乎是从文本文件中提取消息,而不是从列表中提取消息……哦,这很有趣!对于长列表非常好,对于短列表隐藏的单词则不太好。尝试
all\u matcher=re.compile(“|”).join([re.escape(word)for word in hidden\u words])
用于文本文件中的行:print(“”).join(all\u matcher.findall(line))
我将答案留在这里,但事后我更喜欢你的答案。更简洁。我开始对正则表达式对象产生了兴趣,但希望OP能够理解到底发生了什么。不过,我真的很喜欢你的findall方法。也可以在中编辑我的方法。我甚至没有考虑过正则表达式,OOPS!