1 / 1 / 0
Регистрация: 14.05.2017
Сообщений: 17

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

23.10.2017, 12:52. Показов 3469. Ответов 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
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru