Как сделать поиск по ключевому слову с занесением в переменную?

Дан текстовый файл с данными в виде:

123:4000
567:3000
890:2000

Необходимо выполнить поиск заданного числа (прим. 567) и занести в переменную число в этой строке после двоеточия (т.е. 3000).


Ответы (5 шт):

Автор решения: Zhihar

например, так:

with open(file_path, 'r') as file:
    data = [list(map(int, line[:-1].split(":"))) for line in file.readlines()]

res = [obj[1] for obj in data if obj[0] == 567]
→ Ссылка
Автор решения: ПИТОНИСТ версия-3-8

Простой код в лоб (удобная структура данных в данном случае - словарь):

sl={}
t=open('file.txt')
tr=t.read()
tr = tr.split('\n')
for i in tr: sl[int(i.split(':')[0])] = int(i.split(':')[1])
per = (sl[int(input('Поиск: '))])
print(per)

Ввод:

Поиск: 567

Вывод:

3000
→ Ссылка
Автор решения: IvanZ

Простой код

f = open('file.txt', 'r')
sl = {}
for pairs in f:
  sl[pairs.split(':')[0]] = pairs.split(':')[1]
number = sl[input()]
print(number)
→ Ссылка
Автор решения: Garry Galler
def search(file, what):
    for line in file:
        val = line.split(":")
        if len(val) == 2  and val[0].strip() == what:
            return val[1].strip()
    return ""

# это имитация чтения из файла
from io import StringIO

file = StringIO("""123:4000
567:3000
890:2000""")


#val = search(open("test.txt"), "567")
val = search(file, "567")
print(val) # "3000"

Вариант с регулярными выражениями:

>>> import re
>>> def search(s, what):
    m = re.search(fr"(?:{what}):(\d+)", s)
    if m: return m.group(1)
    return ""

>>> s = StringIO("""123:4000
567:3000
890:2000""").read()  # это как если бы мы прочитали файл
>>> search(s, "567")
'3000'
>>> search(s, "890")
'2000'
>>> search(s, "1000")
''
→ Ссылка
Автор решения: SergFSM

С помощью регулярки:

from re import search

k = '890'
with open('file.txt') as f:
    res = s[1] if (s := search(fr'{k}:(\d+)', f.read())) else 'не найдено'
    
print(res)  # '2000'
→ Ссылка