打印字符串我是一个新手,以python.Consider我有一个列表['python','java','ruby']
Python来从子从列表
我有一个文本文件如:
jrubyk
knwdjavawe
weqkpythonqwe
1ruby.e
预期输出:
ruby
java
python
ruby
我需要打印列表中隐藏的字符串作为子字符串。 有没有办法获得?
打印字符串我是一个新手,以python.Consider我有一个列表['python','java','ruby']
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:
for hidden_string in hidden_strings:
if hidden_string in line:
print(hidden_string)
@wonderwhy这个问题非常有意义。他有一个隐藏的单词列表和一个带有隐藏单词的gobble-dee-gook文本文件。他试图将他隐藏的单词从*咳嗽*“加密”文本文件中提取出来。 – 2014-09-05 16:26:21
但是为什么要搜索文件里面的单词,如果你已经有了@AdamSmith? – wonderwhy 2014-09-05 16:34:26
@wonderwhy“为什么”在这里并不是一个真正有效的问题,但好像他从文本文件中拉出了一条消息,而不是列表。 – 2014-09-05 16:35:50
我倾向于使用regular expressions当我想从大串剥离某些子。这是一个不雅但可读的方式来做到这一点。
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()
哦,这很有趣!非常适合长名单,对于隐藏单词的短名单不太好。尝试'all_matcher = re.compile(“|”.join([在隐藏字词中的单词re.escape(word)]))''为textfile中的行:print(“.join(all_matcher.findall(line))) ' – 2014-09-05 16:42:18
我会在这里留下答案,但事后看来我更喜欢你的答案。更简洁。我开始对正则表达式对象产生青蛙,但希望OP能够理解正在发生的事情。不过,我真的很喜欢你的findall方法。 – Aphid 2014-09-05 16:46:29
随意编辑我的替代选项。我甚至没有考虑这里的正则表达式,哎呀! – 2014-09-05 17:10:48
没有,如果你没有数据库或引用,因为你正在给你期望输出的话。如果你这样做,它没有任何意义。你不需要该文件就可以这么做。只是迭代项目并打印它们 – wonderwhy 2014-09-05 16:21:25
@ShashankAgarwal可能他没有做任何事情。无论如何,他试图做的是没有什么用,只能练习编程语言 – wonderwhy 2014-09-05 16:23:27
我已经改变了问题中的示例输入以清楚地说明问题。 – Basilevs 2014-09-06 15:32:47