在Python的txt文件中查找电话号码



我有一个.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']

最新更新