【发布时间】:2013-12-21 22:11:17
【问题描述】:
我有这个代码来搜索文件中的单词(而不是子字符串)并返回找到单词的行:
def word_search(word, file):
pattern = re.compile(r'\b{}\b'.format(re.escape(word), flags=re.IGNORECASE))
return (item for item in file
if pattern.match(item) == -1)
但是这段代码(几乎)归还了一切。我究竟做错了什么? 感谢您的关注
这是代码:
sentences = re.split(r' *[\.\?!][\'"\)\]]* ]* *', text) # to split the file into sentences
def finding(word, file):
pattern = re.compile(r'\b{}\b'.format(re.escape(word)), flags=re.IGNORECASE)
return (item for item in file if pattern.search(item)) # your suggestion
from itertools import chain # I'm plannig on using more words, and I dont want duplicate #sentences. Thats why i use the chain + set.
chain = chain.from_iterable([finding('you', sentences), finding('us', sentences)])
plural_set = set(chain)
for sentence in plural_set:
outfile.write(sentence+'\r\n')
这给了我你在下面看到的结果。
这是测试文件的内容:
“好吧,沃伦夫人,我看不出你有什么特别的原因 因为不安,我也不明白为什么我,谁的时间是一些 值,应该干涉此事。我真的有其他事情要做 跟我来。” 夏洛克·福尔摩斯这么说,转身面对伟大的 剪贴簿,他在其中整理和索引他最近的一些 材料。
但是女房东有她的性别的顽固和狡猾。 她坚定地坚持自己的立场。
“你去年为我的一个房客安排了婚外情,”她 说——“费尔代尔·霍布斯先生。”
“啊,是的——很简单的事情。”
“但他永远不会停止谈论它——您的好意,先生,以及 你将光明带入黑暗的方式。我想起了他的 当我自己处于怀疑和黑暗中时的话。我知道你可以 你只会。”
福尔摩斯在奉承方面很容易接近,而且,为了他 正义,站在善良一边。两股力量让他躺下 无奈地叹了口气,放下他的口香糖刷子,把椅子往后一推。
以及代码返回的内容:
沃伦,我看不出你有什么特别的理由 不安,我也不明白为什么我,我的时间是有价值的, 应该干涉这件事 夏洛克·福尔摩斯这么说并转身 回到他正在整理和索引的伟大剪贴簿 他最近的一些材料。
但是女房东有她的性别的顽固和狡猾。 她坚定地坚持自己的立场。
“你去年为我的一个房客安排了婚外情,”她 说——“费尔代尔·霍布斯先生。”
“啊,是的——很简单的事情。”
“但他永远不会停止谈论它——您的好意,先生,以及 你把光明带入黑暗的方式我知道如果你能做到 你只会。”
福尔摩斯在奉承方面很容易接近,而且,为了他 正义,站在善良一边
【问题讨论】: