Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
3 / 3 / 1
Регистрация: 18.10.2013
Сообщений: 90

Как выделить поле из строк файла?

18.10.2013, 21:51. Показов 6086. Ответов 13
Метки нет (Все метки)

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

Исходный текст такой

Code
1
2
3
4
[02:26] Object: [ 66d2-497a-9572 ]
[02:26] Object: [ dce7-45d2-b580 ]
[02:26] Object: [ a68e-44a2-ab41 ]
[02:26] Object: [ 4ebe-4bf3-b907 ]
и.т.д

а надо чтоб получился такой и в каждую строку

Code
1
2
3
4
66d2-497a-9572
dce7-45d2-b580
a68e-44a2-ab41
4ebe-4bf3-b907
Заранее всем спасибо за решение моей проблемы!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.10.2013, 21:51
Ответы с готовыми решениями:

Как программно изменить цвет текста в поле ввода и как выделить весь текст в поле ввода по умолчанию
Как программно изменить цвет текста в поле ввода и как выделить весь текст в поле ввода по умолчанию? Т.е. надо чтоб по ходу выполнения...

Как выделить поле таблицы word
Необходимо выполнить выделение ячейки при кликаньи мышки по ней. Работа в word c использованием поля ввода из подраздела формы. Нужен...

Как выделить строку в поле Memo?
Здравствуете! Вывожу содержимое файла в поле Memo. Memo1->Lines->LoadFromFile(OpenDialog1->FileName); Поле Memo с вертикальной...

13
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
18.10.2013, 22:56
Python
1
2
3
4
5
6
#!/usr/bin/env python3
 
with open('file.txt', encoding='utf-8') as fin, \
     open('output.txt', 'w', encoding='utf-8') as fout:
    for line in fin:
        print(line[18:32], file=fout)
1
3 / 3 / 1
Регистрация: 18.10.2013
Сообщений: 90
18.10.2013, 23:00  [ТС]
Огромнейшее спасибо!
0
 Аватар для nullxdth
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
19.10.2013, 01:15
Как то не очень хорошо хадкодить явные позиции, лучше на формат завязаться:
Python
1
2
3
4
5
6
7
8
9
#!/usr/bin/python
 
import sys
import re
 
if __name__ == "__main__":
    pattern = re.compile(r"[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}")
    for line in sys.stdin:
        print pattern.search(line).group(0)
Если вам для практических целей, то такие вещи лучше на каком-нибудь awk писать.
0
3 / 3 / 1
Регистрация: 18.10.2013
Сообщений: 90
19.10.2013, 02:36  [ТС]
accept,проверил скрипт,работает хорошо,но не то маленько надо было,ну как объяснил так вы и ответили,допустим у меня есть спарсеные ники разной длины и id 36 символов:

Code
1
2
[02:26] Object: тут ник n-ное количество букв [ 18b4c91a-66d2-497a-9572-5c16e66a02ec ]
[02:26] Object: тут ник n-ное количество букв [ 397499d4-dce7-45d2-b580-30a4f1b0dcb3 ]
в самом парсере в моем нельзя сразу обработать,особенность скриптового языка такая LSL

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

Python
1
2
3
4
5
6
#!/usr/bin/env python3
 
with open('C:\py1.txt', encoding='utf-8') as fin, \
     open('C:\output.txt', 'w', encoding='utf-8') as fout:
    for line in fin:
        print(line[-39:], file=fout)
после обработки скриптом получается такое

Code
1
2
3
18b4c91a-66d2-497a-9572-5c16e66a02ec ]
 
397499d4-dce7-45d2-b580-30a4f1b0dcb3 ]
через строку и не получается убрать в конце пробел с скобкой,не подскажите как убрать пробел в конце и скобку и чтоб было в каждой строке а не через строку,а то по особенностям LSL надо чтоб было в каждой строке,у меня будет много таких id и будет затруднительно в ручную смещать строки и убирать пробелы с скобками.Заранее большое спасибо!

Добавлено через 5 минут
Цитата Сообщение от nullxdth Посмотреть сообщение
Как то не очень хорошо хадкодить явные позиции, лучше на формат завязаться:
Python
1
2
3
4
5
6
7
8
9
#!/usr/bin/python
 
import sys
import re
 
if __name__ == "__main__":
    pattern = re.compile(r"[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}")
    for line in sys.stdin:
        print pattern.search(line).group(0)
Если вам для практических целей, то такие вещи лучше на каком-нибудь awk писать.
Для меня это ещё пока сложно,книгу дочитал Марк Лутц-Изучаем Python-4-е изд. до 7 главы-Строки,а что такое awk?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
19.10.2013, 04:49
Python
1
2
3
4
>>> s = '[02:26] Object: тут ник n-ное количество букв [ 18b4c91a-66d2-497a-9572-5c16e66a02ec ]'
>>> s[-38:-2]
'18b4c91a-66d2-497a-9572-5c16e66a02ec'
>>>
Цитата Сообщение от lehaab Посмотреть сообщение
Python
1
'C:\py1.txt'
Python
1
'C:\\py1.txt'
Python
1
r'C:\py1.txt'
экранируй или используй сырые строки

 Комментарий модератора 
дальнейшее обсуждение того, в чём лучше обрабатывать - в теме
1
3 / 3 / 1
Регистрация: 18.10.2013
Сообщений: 90
19.10.2013, 08:40  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
Python
1
2
3
4
>>> s = '[02:26] Object: тут ник n-ное количество букв [ 18b4c91a-66d2-497a-9572-5c16e66a02ec ]'
>>> s[-38:-2]
'18b4c91a-66d2-497a-9572-5c16e66a02ec'
>>>
Ура,всё отлично заработало,Спасибо огромное!Только не могу понять почему же все таки через строчку выводило,не из за -2 в коде?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
19.10.2013, 11:43
Цитата Сообщение от lehaab Посмотреть сообщение
почему же все таки через строчку выводило
потому что в конце каждой прочитанной строки есть перевод строки и у print() ещё свой перевод строки
0
 Аватар для snakeand1
7 / 7 / 1
Регистрация: 17.06.2013
Сообщений: 83
19.10.2013, 11:49
Простое решение
Python
1
2
3
4
5
6
file = open('1.txt')
for line in file:
    line = line.split(' ')
    for string in line:
        if len(string) > 20 and '-' in string:
            print(string)
0
3 / 3 / 1
Регистрация: 18.10.2013
Сообщений: 90
19.10.2013, 13:49  [ТС]
Цитата Сообщение от snakeand1 Посмотреть сообщение
Простое решение
Python
1
2
3
4
5
6
file = open('1.txt')
for line in file:
    line = line.split(' ')
    for string in line:
        if len(string) > 20 and '-' in string:
            print(string)
Цитата Сообщение от snakeand1 Посмотреть сообщение
Простое решение
Решил остановиться на таком,в для моей задачи самое то:
Python
1
2
3
4
with open(r'C:\py1.txt') as fin, \
     open(r'C:\output.txt', 'w') as fout:
    for line in fin:
        print(line[-39:-2], file=fout)
но и вам спасибо,копирну,испытаю,да и нрвиться разбирать код в процессе обучения,так легче понимается что к чему =)
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
19.10.2013, 19:33
Цитата Сообщение от lehaab Посмотреть сообщение
Решил остановиться на таком,в для моей задачи самое то:
забыл кодировку файла, и срез захватывает пробел в конце
кодировка всегда указывается
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
19.10.2013, 19:36
через rsplit()
Python
1
2
3
4
5
6
#!/usr/bin/env python3
 
with open('file.txt', encoding='utf-8') as fin, \
     open('output.txt', 'w', encoding='utf-8') as fout:
    for line in fin:
        print(line.rsplit(None, 2)[1], file=fout)
0
3 / 3 / 1
Регистрация: 18.10.2013
Сообщений: 90
19.10.2013, 21:18  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
через rsplit()
Python
1
2
3
4
5
6
#!/usr/bin/env python3
 
with open('file.txt', encoding='utf-8') as fin, \
     open('output.txt', 'w', encoding='utf-8') as fout:
    for line in fin:
        print(line.rsplit(None, 2)[1], file=fout)
Извиняюсь,но вы меня путать начинаете,я сегодня утром с кодировкой открывал и ошибка выскакивала,длинная ошибка в IDLE(Python GUI) её убрал и все норм стало,а вчера не было такого,может как то настроил у себя по своему винду,но у меня и без кодировки нормально было всегда ну кроме консоли ,да и поидее она не нужна,там у меня везде латыница будет,для неё как понял и ascii хватит,а так тот код где вы подскали -2 добавить в срез с права,коду выше и r' добавить перед путем к файлу,все норм стало,ну попробую ещё с rsplit =) спасибо что помогаете нубу и даете стимул к дальнейшему обучению питона,пробовал С,к С++ даж не притрагивался,джаву пробовал,тоже не мое,html,ну это наверное дети сейчас учат с первого класса))php пробовал,не мое тоже,питон увидел и нрава,почти как бейсик))учил в школе бейсик прост да сам увлекался немного в свободное время.Спс таким людям как вы что помогаете новичкам,если выучу норм то обязательно тоже буду помагать,а так как работа да ещё хобби 3д моделирование то не быстро,прыгаю то в 3д моделирование то в питон)) так мозг хоть отдыхает от кодов,в графике там по другому мозг работает и меньше голова устает)Хрень наверное всякую пишу не поделу,лучше дальше не буду)Спс всем ещё раз,возможно ещё не раз обращусь,уже назревает вопрос,как сравнить эти id в файлах,есть пофторяющиеся или нет,ну попробую сам разобраться после выходных,кстать всех с приятными выходными и счастья во всем)
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
19.10.2013, 22:23
Цитата Сообщение от lehaab Посмотреть сообщение
длинная ошибка в IDLE(Python GUI) её убрал и все норм стало,а вчера не было такого
не надо его в IDLE открывать, просто запускай с диска
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.10.2013, 22:23
Помогаю со студенческими работами здесь

Как выделить цветом одно поле из списка?
Есть ленточная форма, в неи есть несколко полей, при определнном условии (дата меньше текущей), нужно написать в поле 'closed' и выделить...

Как в группе значений выделить 1,2,3 значение и записать в новое поле
Уважаемые специалисты! Есть таблица . На базе ее формируется конечный запрос2. В нем собрана Сумма 5 лучших результатов каждого...

Как выделить диапазон строк?
нужно выделить несколько строк Rows('1').Select - ok Rows('1:24') .Select- ok Rows(Count * 70 + 10).Select - ok Rows(Count * 70...

Как выделить определенное поле формы, чтобы потом изменить его свойства?
Здравствуйте. Ситуация такая: есть форма(F_Printer) в ней более 30 полей. При двойном нажатии на поле появляется другая форма (Gr_1_1),...

Как в StringGrid выделить несколько строк?!!!
Как в StringGrid выделить несколько строк?!!!! Строки, которые выделяться будут копироваться в дальнейшем в другой компонент. Думаю,...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru