Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 15.04.2017
Сообщений: 12

Выборочно сложить данные из нескольких строк

15.04.2017, 12:54. Показов 5019. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,
помогите новичку.

Имеем текст вида:
500 Вася
250 Петя
136 Вася
407 Маша

Я хочу добиться поиска совпадающих имён и сложения чисел в строках, с объединением таких строк, чтобы получилось:
636 Вася
250 Петя
407 Маша

Нашёл на форуме совет по матрицам, выходит вот что:

Python
1
2
3
4
5
6
with open('myfile', 'r') as one:
    line1 = one.readline().rstrip('\n')
    for line in one:
        matr.append(list(line.rstrip('\n')))
    print(line1)
    print(matr)
получаю результат вида:
Python
1
[['5', '0', '0', '\t', 'В', 'а', 'с', 'я'], ['2', '5', '0', '\t', 'П', 'е', 'т', 'я', ...]]
, но не понимаю, что с ним можно делать дальше.
Пробовал токенизацию и сравнение в цикле, но там получается бесконечный цикл:

Python
1
2
3
4
5
6
7
8
9
10
11
with open('myfile', 'r') as one:
    x = one.read()
    a = nltk.word_tokenize(x)                   # Даёт на выходе ['500', 'Вася', '250', 'Петя', '136', 'Вася' ... ]
    for i in a:
        for j in a:
            if i.isdigit:
                for w in a:
                    for v in a:
                        if v.isalpha and j == v:
                            iw = i + w
                            new = print(iw, j)
Python3
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.04.2017, 12:54
Ответы с готовыми решениями:

Выборочно сложить ячейки в процессе генерации таблицы
Доброе время суток, уважаемые форумчане! Вновь у меня проблема с этой таблицей. ...

Выборочно суммировать значения строк из файла
Здравствуйте. Имеется файл: Дата, номер телефона, количество проговорённых минут. Нужно по интересующему номеру рассчитать сумму...

Запрос в SQlite данные из нескольких строк в несколько столбцов
Здравствуйте, прошу помощи. есть таблица sqlite "data": id_users, id_types (тип данных), data1, data2, data3, data4. У одного id_users...

4
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.04.2017, 13:30
Лучший ответ Сообщение было отмечено argkh как решение

Решение

Как вариант:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python3
 
cnt = {}
with open("names.txt") as f:
    for line in f:
        number, name = line.split()
        if name in cnt:
            cnt[name] += int(number)
        else:
            cnt[name] = int(number)
 
with open("counters.txt", "w") as f:
    for name in cnt:
        print(cnt[name], name, file = f)
1
0 / 0 / 0
Регистрация: 15.04.2017
Сообщений: 12
15.04.2017, 14:41  [ТС]
Странно, но работает как-то наполовину: на пробном файле всё в порядке, а на большом рабочем - говорит
Python
1
2
3
4
5
6
Traceback (most recent call last):
 
  File "<ipython-input-30-a3f9bc30820f>", line 4, in <module>
    number, name = line.split()
 
ValueError: not enough values to unpack (expected 2, got 0)
Это, видимо, где-то есть испорченная строка и он останавливает всё?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.04.2017, 15:13
Очевидно, на пустой строке спотыкается (судя по expected 2 got 0). Я же просто пример показал, а так нужно проверять, что из очередной строки удалось 2 значения получить. К тому же первое может и не числом оказаться... try в помощь.
0
0 / 0 / 0
Регистрация: 15.04.2017
Сообщений: 12
15.04.2017, 15:26  [ТС]
Спасибо, конечно буду ещё разбираться и адаптировать. Там действительно пустые строки обнаружились, после удаления всё сработало на ура.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.04.2017, 15:26
Помогаю со студенческими работами здесь

Выборочно отредактировать данные в файле Excel, не затронув остальные
У меня такая проблема. Создаю базу данных. Связала Delphi с Excel. Дело в том что у меня в StringGrid одна строка с нужной мне информацией,...

Как из одного столбца выборочно перенести данные в другой
Помогите пожалуйста. Заранее прошу прошения если такая тема уже была, не нашел. Мне необходимо перенести даты из столбца В в...

Как объединить данные из нескольких строк в одну, через запятую?
В MS SQL можно с помощью GROUP_CONCAT. Но как объединить данные из нескольких строк в одну, через запятую в MS Access? Name Петров ...

По одной ячейке собрать данные из нескольких столбцов и строк в одну
Здравствуйте! Есть на работе экселевский файл. Данные в него заносились для просмотра. Сейчас решили перенести в базу. Есть номер...

Как объединить данные из нескольких строк в одну, через запятую?
У меня есть три таблицы: Фильм: id, название, ... Актер: id, имя, ... Фильм_актер: id, id_filma, id_aktera Я делаю запрос: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru