我是Python的新手,我正在为我和我的朋友们制作一个简单的程序。这是一个有4个选项的菜单,其中一个选项是搜索我们中的一个。它是一个输入,询问用户要搜索什么名字,然后显示该用户的文本文件。当选择该选项时,用户将被提示";输入名称:";,然后他们必须输入他们想要搜索的人的第一个和第二个名字。
我想做的是允许用户通过搜索名字和姓氏来搜索他们想要的人,这将忽略文本文件中的空白。
到目前为止,我所做的是,我已经做到了让用户能够搜索某人,但这并没有忽略空白。因此,例如,如果我想搜索";Homer Simpson";,我可以搜索荷马并找到结果,但如果我搜索";Homer Simpson";,它会给我";无效选项";从我的菜单。我正在努力改变这一点。
这是我用于选项的代码:
import os
from os import listdir
os.system("")
import glob
import os.path
def menu():
print("1. View a user")
menu()
option = int(input("n" + "Enter your option: "))
while option !=0:
if option == 1:
user = input("Enter a name: ")
dir_path = r'D:My projectusers'
#The user folder contains all users named as their name followed by Txt, e.g. Homer Simpson.txt
for file in os.listdir(dir_path):
cur_path = os.path.join(dir_path, file)
if os.path.isfile(cur_path):
with open(cur_path, 'r') as file:
contents = file.read()
if user in contents:
print(contents + 'n')
#Printing the contents of the text file that the name has been found in
menu()
break
else:
print ("Invalid option")
到目前为止,我的想法是,为了删除空间,在读取文件时,我需要完全删除空间,并从用户的输入中删除空间。然后,它会在没有空白的文本文件中搜索用户的输入,在其中一个文本文件中找到匹配项,然后在打印文本文件时将文本文件恢复为原始文件,尽管我不太确定如何做到这一点。
任何帮助都将不胜感激,谢谢!
如果我正确理解你的问题,你想看看输入的不带空格的名称是否包含在文件的文本内容中,也不带空格。如果这是正确的,那么您可以为此使用re
库。re
库是正则表达式。因此,您将在程序中首先使用import re
。
然后你可以更改你的线路:
if user in contents:
收件人:
if re.sub('s','',user) in re.sub('s','',contents):
函数re.sub(pattern,replaced_with,original_string)
将替换字符串中所需模式的任何实例,并返回修改后的字符串,同时保持原始字符串不变。在这种情况下,字符串's'
是任何空白字符(制表符、新行、空格…(的正则表达式。因此,re.sub('s','',content)
将返回变量content
的一个版本,其中任何空白都被空字符串替换。