如何使用Python搜索包含某个文本文本的文字?
请看下面的代码。这会在文本文件中找到包含字母'b'的字母并打印所有包含字母'b'的单词?如何使用Python搜索包含某个文本文本的文字?
x = open("text file", "r")
for line in x:
if "b" and in line: print line
searchfile.close()
现在这是我的问题。我想不仅仅搜索一个,而是几个字母。 像,a和b都必须在同一个词。 然后打印包含两个字母的单词列表。
我想让用户决定这些字母应该是什么。
我该怎么做?
现在我想出了一些新的东西。读完答案后。
X =打开( “文本文件”, “R”)
在X线: 如果在线路的 “b” 行和 “c” 和 “r” 在线:打印行
这个工作,而不是? 我如何让用户输入字母?
不,你的代码(除了一个事实,即它的语法不正确的),将打印每线具有“B”,不是的话。
为了做你想做的事情,我们需要更多关于文本文件的信息。 Suppossing单词由单个空格分开,你可以做这样的事情
x = open("file", "r")
words = [w for w in x.read().split() if "a" in w or "b" in w]
没有空格。 – user959397
Split可以处理任何类型的空白。 ''\ t \ tfee fie \ nfoe fum \ r \ n“.split()'给出'['fee','fie','foe','fum']' –
如果他只想匹配一个单词信?还是三个字母?你的代码应该可能处理所有这些情况。 –
您可以使用设置此:
letters = set(('l','e'))
for line in open('file'):
if letters <= set(line):
print line
在上面,letters <= set(line)
测试是否letters
每一个元素出现在设置由line
的唯一字母组成。
x = open("text file", "r")
letters = raw_input('Enter the letters to match') # "ro" would match "copper" and "word"
letters = letters.lower()
for line in x:
for word in line.split()
if all(l in word.lower() for l in letters): # could optimize with sets if needed
print word
首先,您需要将文件的内容拆分为单词列表。要做到这一点,你需要将它拆分为换行符和空格,可能也会超出,我不知道。根据需求的复杂程度,您可能需要使用re.split。但是,对于这方面的例子让刚刚去:
words = []
with open('file.txt', 'r') as f:
for line in f:
words += line.split(' ')
现在,这将有助于效率,如果我们只需要扫描一次的话,想必你只想要一个词来一次最后的名单反正出现,所以我们投这个列表作为一个set
words = set(words)
然后让那些只含有selected_words
所有的字母在其他一些迭代letters
:
selected_words = [word for word in words if
[letter for letter in letters if letter in word] == letters]
我认为这应该工作。任何关于效率的想法?我不知道这些列表解析如何运行的细节。
如果您正在分割空白,则不需要传递参数进行拆分。正如所写的,'line.split('')'会留下一个尾随的换行符。 –
'[字母中的字母如果字母中的字母的字母] ==字母'可以缩写为'全部(字母中的字母中的字母)' –
我喜欢你只检查一个字。 –
这是一个拼字游戏求解器吗? –