打印字符串我是一個新手,以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