2016-02-06 3 views
1

Я довольно новичок в коде, и у меня проблема при чтении текстового файла. Для моего кода мне нужно попросить пользователя ввести код определенного имени, чтобы перейти к коду. Однако существуют различные коды имен, которые пользователь может использовать, и я не знаю, как это сделать, если вы введете код, вы можете продолжить.Поиск и сортировка в текстовых файлах

Например, текстовый файл выглядит следующим образом

john123, х, х, х

susan233, х, х, х

Конор, х, х, х

Что я должен сделать, это принять тег имени, несмотря на то, что он есть, и иметь возможность распечатать его после. Все теги имен находятся в одном столбце.

file = open("paintingjobs.txt","r") 

details = file.readlines() 


for line in details: 
    estimatenum = input ("Please enter the estimate number.") 
    if estimatenum = line.split 

Это мой код до сих пор, но я не знаю, что делать с точки зрения увидеть, если имя тега действует, чтобы позволить пользователю продолжить.

+0

Непонятно, что вы пытаетесь сделать здесь. Каков ожидаемый результат? – styvane

+0

Можете ли вы привести конкретный пример ожидаемого результата, учитывая ввод пользователя? В любом случае, чтобы проверить, присутствует ли вход пользователя в строке вашего текстового файла, вы можете использовать «if evaluationatenum in line:». –

ответ

0

Вы можете использовать модуль под названием pickle. Это внутренняя библиотека Python 3.0. В Python 2.0 он называется: cPickle; все остальное одно и то же.

Будьте предупреждены, что способ, которым вы это делаете, не является безопасным подходом!

from pickle import dump 

credentials = { 
    'John': 1234, 
    'James': 4321, 
    'Julie': 6789 
} 


dump(credentials, open("credentials.p", "wb")) 

Это сохраняет файл под названием credentials.p. Вы можете нагрузка это следующим образом:

from pickle import load 

credentials = load(open("credentials.p", "rb")) 

print(credentials) 

Вот несколько тестов:

test_name = 'John' 
test_code = 1234 

Это составит:

print('Test: ', credentials[test_name] == test_code) 

, который отображает: {'John': 1234, 'James': 4321, 'Julie': 6789}

дисплеи : Test: True

test_code = 2343 
print('Test:', credentials[test_name] == test_code) 

Дисплеи: Test: False

+0

Зачем приносить 'pickle' в это? – styvane

+0

Я боюсь, что я не могу использовать какие-либо импортные товары, я надеялся найти решение без импорта. Большое вам спасибо за помощь! – kingjhez

+0

Упрощенный подход. Самый простой способ сделать то, что они хотят. Внутренняя библиотека Python. Открывает данные в той же структуре, в которой они были сохранены, то есть в этом случае 'dict'. – Pouria

1

Вот другое решение, без pickle. Я предполагаю, что ваши учетные данные хранятся по одному в каждой строке. Если нет, вы должны сказать мне, как они разделены.

name = 'John' 
code = '1234' 

with open('file.txt', 'r') as file: 
    possible_match = [line.replace(name, '') for line in file if name in line] 

authenticated = False 

for item in possible_match: 
    if code in tmp: # Or, e.g. int(code) == int(tmp) 
     authenticated = True 
     break 
Смежные вопросы