2014-09-05 71 views
1

打印字符串我是一個新手,以python.Consider我有一個列表['python','java','ruby']Python來從子從列表

我有一個文本文件如:

jrubyk 
knwdjavawe 
weqkpythonqwe 
1ruby.e 

預期輸出:

ruby 
java 
python 
ruby 

我需要打印列表中隱藏的字符串作爲子字符串。 有沒有辦法獲得?

+0

沒有,如果你沒有數據庫或引用,因爲你正在給你期望輸出的話。如果你這樣做,它沒有任何意義。你不需要該文件就可以這麼做。只是迭代項目並打印它們 – wonderwhy 2014-09-05 16:21:25

+0

@ShashankAgarwal可能他沒有做任何事情。無論如何,他試圖做的是沒有什麼用,只能練習編程語言 – wonderwhy 2014-09-05 16:23:27

+0

我已經改變了問題中的示例輸入以清楚地說明問題。 – Basilevs 2014-09-06 15:32:47

回答

1

蠻力的方法是:

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) 
+1

@wonderwhy這個問題非常有意義。他有一個隱藏的單詞列表和一個帶有隱藏單詞的gobble-dee-gook文本文件。他試圖將他隱藏的單詞從*咳嗽*「加密」文本文件中提取出來。 – 2014-09-05 16:26:21

+0

但是爲什麼要搜索文件裏面的單詞,如果你已經有了@AdamSmith? – wonderwhy 2014-09-05 16:34:26

+1

@wonderwhy「爲什麼」在這裏並不是一個真正有效的問題,但好像他從文本文件中拉出了一條消息,而不是列表。 – 2014-09-05 16:35:50

2

我傾向於使用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() 
+3

哦,這很有趣!非常適合長名單,對於隱藏單詞的短名單不太好。嘗試'all_matcher = re.compile(「|」.join([在隱藏字詞中的單詞re.escape(word)]))''爲textfile中的行:print(「.join(all_matcher.findall(line))) ' – 2014-09-05 16:42:18

+0

我會在這裏留下答案,但事後看來我更喜歡你的答案。更簡潔。我開始對正則表達式對象產生青蛙,但希望OP能夠理解正在發生的事情。不過,我真的很喜歡你的findall方法。 – Aphid 2014-09-05 16:46:29

+0

隨意編輯我的替代選項。我甚至沒有考慮這裏的正則表達式,哎呀! – 2014-09-05 17:10:48