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

Увеличить длину строки при считывании файла

23.10.2017, 12:52. Показов 3433. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, не получается найти как можно увеличить длину строки при построчном считывании, для примера дан текстовый файл заполненный так:

N162848 DD2('3) DD2('5);
N162003 DD1('5) DD1('3);
114 DD2('14) DD1('14) SB1('2) VT3('2) VT1('2) SNP1('1) C6('2) R1('2),
R2('2) SNP1('7);
107 DD2('7) DD1('7) C6('1) C5('1) SNP1('6);
N162820 R3('1) DD2('6),
DD1('3) R1('2) C4('2),
R4('6) C2('4);
N163444 DD2('9) C8('2) R7('2);

не получается придумать как реализовать подобное условие: если строка оканчивается не на ';' то всё что после приписывается также к этой строке пока также не закончится строка на этот символ. Может я вообще не правильно придумал условие и эта задача решается по другому?

вот мой код если вдруг понадобится, при выводе видно что при создании конечного словаря в значении ключа '114' не хватает 2 элементов и также в ключе 'N162820' не хватает 5 элементов.


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import re
from itertools import groupby
 
mas_uzel=[]
mas_elem=[]
mas_all_elem=[]
element=[]
mas_uzel1=[]
mdict1={}
mas_chisla=[]
#чтение построчно
with open("1.txt", "r") as file:
    for line in file:
        print('\n', line)   
        elem=re.findall('\W(\w+)[(]', line) # только список элементов!!!
        print(elem)
        uzel=re.findall('^\w+', line) #только номер узла (1 значение  в списке)
        
        nomer=re.findall("['](\d)", line) #только цифры сфязей
        
        #//////////этот кусок  делает словарь тип которого:
        #{ключ, значение} = {номер узла, [все элементы в него входящие]}
        for uz1 in uzel:
            mas_uzel1.append(uz1)       
        for el1 in elem:
            element.append(el1) 
        mdict=dict(zip(mas_uzel1, [element]))
        mdict1.update(mdict)
        #print(mdict)
        element=[]
        mas_uzel1=[]
        
        for el in elem:
            if el not in mas_elem: # удаление повторяющихся элементов
                mas_elem.append(el)
 
        for ele in elem: # полный список элементов
            mas_all_elem.append(ele)
 
        for uz in uzel:#очевидно узлы!
            mas_uzel.append(uz)
 
        for ch in nomer:
            mas_chisla.append(ch)
                
print('\n' 'кол-во элементов', len(mas_elem))
print('\n', mas_elem)
 
print('\n' 'все элементы' , len(mas_all_elem))
print('\n', mas_all_elem)
 
print('\n' 'все узлы', len(mas_uzel)) 
print('\n', mas_uzel)
 
print('\n' 'все связи элементов', len(mas_chisla))
print('\n', mas_chisla)
 
print('\n' 'словарь!')
print('\n', mdict1)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.10.2017, 12:52
Ответы с готовыми решениями:

Переполнение строки при считывании из файла
Считываю я строки из файла, в котором их 500 тысяч. Если строка начинается на R, то я записываю её в другой файл. Примерно на 312000-й...

Ошибка при считывании строки из файла
При попытке прочитать строку выдает ошибку: Warning: fgets() expects parameter 1 to be resource, string given in $fp =...

Перенос строки при считывании из файла
Глупый конечно вопрос, но почему не происходит перенос строки? Console.WriteLine("перенос\r\nстроки");//переносит ...

4
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
23.10.2017, 15:05
может так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>>>s='''N162848 DD2('3) DD2('5);
N162003 DD1('5) DD1('3);
114 DD2('14) DD1('14) SB1('2) VT3('2) VT1('2) SNP1('1) C6('2) R1('2),
R2('2) SNP1('7);
107 DD2('7) DD1('7) C6('1) C5('1) SNP1('6);
N162820 R3('1) DD2('6),
DD1('3) R1('2) C4('2),
R4('6) C2('4);
N163444 DD2('9) C8('2) R7('2);'''
>>> l = s.split(';')
>>> for i in l: print(i.replace('\n','').replace(',',' '))
 
N162848 DD2('3) DD2('5)
N162003 DD1('5) DD1('3)
114 DD2('14) DD1('14) SB1('2) VT3('2) VT1('2) SNP1('1) C6('2) R1('2) R2('2) SNP1('7)
107 DD2('7) DD1('7) C6('1) C5('1) SNP1('6)
N162820 R3('1) DD2('6) DD1('3) R1('2) C4('2) R4('6) C2('4)
N163444 DD2('9) C8('2) R7('2)
 
>>>
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
23.10.2017, 16:22
Python
1
print(re.sub(r"(.+?;)",r"\1\n",s.replace("\n",'')))
Измененный текст:
Code
1
2
3
4
5
6
N162848 DD2('3) DD2('5);
N162003 DD1('5) DD1('3);
114 DD2('14) DD1('14) SB1('2) VT3('2) VT1('2) SNP1('1) C6('2) R1('2),R2('2) SNP1('7);
107 DD2('7) DD1('7) C6('1) C5('1) SNP1('6);
N162820 R3('1) DD2('6),DD1('3) R1('2) C4('2),R4('6) C2('4);
N163444 DD2('9) C8('2) R7('2);
0
 Аватар для Semen-Semenich
5236 / 3480 / 1176
Регистрация: 21.03.2016
Сообщений: 8,307
23.10.2017, 17:47
Лучший ответ Сообщение было отмечено visket как решение

Решение

Python
1
2
3
with open('input.txt') as inp:
    for i in ''.join(inp.read().split('\n')).split(';'):
        print(i)
0
1 / 1 / 0
Регистрация: 14.05.2017
Сообщений: 17
23.10.2017, 19:22  [ТС]
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
with open('input.txt') as inp:
* * for i in ''.join(inp.read().split('\n')).split('; '):
* * * * print(i)
спасибо всё заработало только пришлось поменять слегка выражение в строке а то не хотел выводить нормально узлы
uzel=re.findall('\w+[ ]', line)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.10.2017, 19:22
Помогаю со студенческими работами здесь

При считывании текста из файла в ListBox не учитывать пустые строки
При считывании из *txt в листбокс убрать пропуски

Найти максимальную длину строки в текстовом файле и распечатать все строки файла, имеющие такую длину
Найти максимальную длину строки в текстовом файле и распечатать все строки файла, имеющие такую длину. Помогите народ!!! С#

Найти максимальную длину строки в текстовом файле и распечатать все строки файла, имеющие такую длину
Найти максимальную длину строки в текстовом файле и распечатать все строки файла, имеющие такую длину. Спасибоооо!

Найти максимальную длину строки в текстовом файле и распечатать все строки файла, имеющие такую длину
Найти максимальную длину строки в текстовом файле и распечатать все строки файла, имеющие такую длину.С++

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru