我有一个.txt
文件,其中包含有关公司的数据。我想创建一个选项,这样当我输入电话号码时,它会显示.txt
文件中的整行。例如:
Company Adress Employees Phone Nr.
Venganese| Big street, Egypt| 52 |2214124112
Monyess | One street, Malta| 89 |2215521575
如果我搜索2214124112
,它会返回关于该公司的全部信息,而且只返回该公司。这就是我想到的,但它真的不想搜索任何东西。
elif choice == "1":
with open( F+'.txt', 'r') as searchfile:
for line in searchfile:
P = re.compile(r'^(d{8})$', re.MULTILINE)
K = input("Enter phone nr")
if K in line and len(len(str(abs(K)))) == P:
print (line)
quit()
else:
print ("No matching phone nr found :(")
如果输入的号码与线路中的电话号码完全或部分匹配,则打印线路:
phonenumber = input("Enter phone number: ")
with open('myfile.txt') as searchfile:
for line in searchfile:
if phonenumber in line:
print(line)
quit()
只有当输入的号码与电话号码完全匹配时,才会打印该行:
import re
phonenumber = input("Enter phone number: ")
pattern = re.compile(".*|(?P<phone_number>[0-9]*)")
with open('myfile.txt') as searchfile:
for line in searchfile:
phone_number = re.search(pattern, line)
if phone_number:
if phone_number['phone_number'] == phonenumber:
print(line)
quit()
如果你想坚持使用Python,我建议你使用pandas
。您读取整个文本文件,然后根据您想要的值查询表:
import pandas as pd
data = pd.read_csv('companies.txt', sep="|", names=["Company", "Adress", "Employees", "Phone Nr."], skiprows=1)
print(data.loc[data["Phone Nr."] == 2215521575])
中的结果
Company Adress Employees Phone Nr.
1 Monyess One street, Malta 89 2215521575
在此之前要知道的一个基本概念是,空字符串在python中是错误的,即if "": ...
将被评估为false,并且该部分不会发生,并且``while":。。。"将中止while循环
with open( F+'.txt', 'r') as searchfile:
line = searchfile.readline()
while line:
line = searchfile.readline()
phone = line.split("|")[-1]
wanted_number = input()
if phone == wanted_number:
print(line)
您可以使用regex
获取带有您的电话号码的线路,如下所示
import re
#with open('data.txt', 'r') as file:
#txt_contents = file.read()
txt_contents = '''
Company Adress Employees Phone Nr.
Venganese| Big street, Egypt| 52 |2214124112
Monyess | One street, Malta| 89 |2215521575
'''
phone_number = '2214124112'
regex = re.compile(r'n.*' + phone_number + '.*n', re.IGNORECASE)
regex
re.search(regex, txt_contents).group(0)
您可以使用一个具有简单列表理解的函数:
fileinput = """
Company Adress Employees Phone Nr.
Venganese| Big street, Egypt| 52 |2214124112
Monyess | One street, Malta| 89 |2215521575
"""
def findbynumber(data, number):
lines = [line
for line in data.split("n") if line
for parts in [line.split("|")] if len(parts) == 4 and parts[3] == number]
return lines
print(findbynumber(fileinput, "2215521575"))
这产生
['Monyess | One street, Malta| 89 |2215521575']