Найти - Пользователи
Полная версия: Подскажите как реализовать код
Начало » Python для новичков » Подскажите как реализовать код
1
ddSanitt
У меня есть вот такой код:


 import matplotlib.pyplot as plt
temp = input("Please enter your information!!   ")
try:
    with open('gfg.txt', 'w') as gfg:
        gfg.write(temp)
except Exception as e:
    print("There is a Problem", str(e))
file_path = 'gfg.txt'  
file = open(file_path)
strnew={}
all_records = {} 
i=0
for line in file: 
    for i in range(len(line)):
        if line[i]==':':
            strnew=line[i+1:]
            strnew = strnew.strip('; . \n')
            records_Inline=strnew.split(';')
            for records in records_Inline: 
                if records != '':
                    key, value = tuple(records.split('-')) 
                    all_records[key]  = int(value)
    i+=1
    
cell_content = [] 
for key in all_records.keys():  
    cell_content.append([key, str(all_records[key])]) 
fig1 = plt.figure(1)  
plt.table(cellText = cell_content, loc = 'best')
plt.axis('off')
plt.figure(2)
bars_loc = range(len(all_records)) 
plt.barh(bars_loc, all_records.values()) 
plt.yticks(bars_loc, list(all_records.keys())) 
plt.show()


Он из поступающего текста создаёт таблицу и график. Текст поступает по определённому шаблону: слово: слово-число; слово-число;
Программа сначала находит : и убирает весь текст до этого : и само : Потом делит на строки по ; Потом делит на подстроки по - И получаются пары слово число.

Мне надо сделать так, чтобы программа работала без этого шаблона и не зависела от - ; и :. Чтобы пользователь мог впихнуть любой текст, где есть какая-либо статистика.
Я думаю надо находить в тексте число. Потом брать в пару слово слева от этого числа, и потом искать следующее число и т.д.
Подскажите как это реализовать?
На картинках пример работы кода
py.user.next
ddSanitt
Мне надо сделать так, чтобы программа работала без этого шаблона и не зависела от - ; и :. Чтобы пользователь мог впихнуть любой текст, где есть какая-либо статистика.
Я думаю надо находить в тексте число. Потом брать в пару слово слева от этого числа, и потом искать следующее число и т.д.
Подскажите как это реализовать?
Сначала преобразуй введённые данные в какую-то определённую форму. А потом напиши часть кода для разбора этой определённой формы. Ну, например, преобразователь ввода сначала удаляет из строки двоеточия, точки с запятой и дефисы. Потом преобразователь удаляет лишние пробелы из строки.

Пользователь ввёл, например,
name: word1 - 123; word2 - 456; word3 - 789.

Преобразователь принял эту строку и на выходе выдал
word1 123 word2 456 word3 789
Дальше у тебя разборщик берёт эту очищенную строку и делает из неё пары
[('word1', 123), ('word2', 456), ('word3', 789)]

Если же пользователь ввёл, например,
word1 - 123, word2 - 456, word3 - 789!
То преобразователь принимает эту строку и на выходе выдаёт
word1 123 word2 456 word3 789
Получилось то же самое, что и в первом случае.

А дальше готовый разборщик разбирает эту строку точно так же, как в первом случае, и выдаёт
[('word1', 123), ('word2', 456), ('word3', 789)]
xam1816
ddSanitt
Чтобы пользователь мог впихнуть любой текст, где есть какая-либо статистика
приведите примеры таких любых текстов со статистикой.
Вообще такая задача для нейросетей актуальна. И это должно быть отдельной программой. Т.е выявление что есть статистика, а что просто названия. Например марки техники: Дон-1500, ЗИЛ-131, ГАЗ-3307. сойдет это за статистику? Поэтому, если это программа для вывода статистики, то не нужно нарушать установленный формат входных данных.
У вас формат
слово: слово-число; слово-число;
все что не в таком формате,программа не должна принимать, также как и usb разъем не принимает напильник.
Другое дело создать скрипт, который пытается привести информацию к нужным входным данным и это отдельный скрипт сам по себе.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB