2015-07-02 4 views
2

Я делаю дополнительную функцию для своей программы чата, которая позволяет вам зарегистрироваться, введя определенную команду, которая заставит хост-скрипт сохранить ваше имя пользователя и имя, которое вы вставляете в терминал, его сохранен как этот 57883: Джек в txt-файле (names.txt) на главной машине. если количество людей зарегистрировали это будет выглядеть следующим образомПоиск строки и linenumber в текстовом файле

57883:jack 
57884:bob 
57885:connor 
57886:james 
57887:zzhshsb93838 
57887:ryan 

, когда кто-то посылает сообщение я хочу знать, если его/ее имя регистрируется, и если да, получить имя для отправки клиенту, так вместо того, чтобы видеть имя пользователя, клиент увидит имя человека, отправляющего сообщение. , чтобы сделать это, мне нужно знать, находится ли имя файла в файле и если да; где в файле, в какой строке. я получил это до сих пор:

peer = sock.getpeername() 
with open('names.txt', 'r') as d: 
    lines = d.readlines() 
    for peer in lines: 

и я не знаю, как узнать, в какой строке он был найден, и, когда я знаю, что, как отделить 57883 и ПДТ, выберите домкрат и сохраните его. Ура!

+0

Почему вы хотите номер строки? –

+0

@AnandSKumar Мне нужен номер строки, чтобы получить имя – tjebbe

+1

Насколько велики вы ожидали этого файла? Я спрашиваю, потому что я чувствую, что это направлено на XY-проблему. Если то, что вы хотите сделать, - это номер карты, чтобы назвать, есть лучший выбор, от словаря к SQL. Ваш путь будет работать, да, но он может быть очень медленным. – NightShadeQueen

ответ

0
with open("names.txt", "r") as f: 
    for i, line in enumerate(f): 
     numb, name = line.rstrip().split(":") 
     print i, numb, name 

Вы можете попросить Python обеспечить кортеж чисел и линии содержания линии для каждой строки файла (см enumerate(f)). Затем вы удаляете ограничитель строки (см. line.rstrip()) и разделяете строку на части, разделенные предоставленным символом (см. split(":")). Тогда у вас есть все три компонента.

+0

Пожалуйста, добавьте комментарии к вашему ответу/коду, размещение кода здесь не является хорошим стилем. –

+0

@Alexezio Исправлено. Сожалею. – dlask

+0

@dlask, как я могу выбрать 'jack' после этого? – tjebbe