Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533

Парсинг тхт-файла

01.04.2022, 09:20. Показов 1725. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане. У меня возникла проблема с парсингом txt-файла, который в последствии хотелось-бы воткнуть в sqlite (но это уже совсем другая история). Сам парсинг я то сделал, но вот думаю, насколько правильно или не правильно я это сделал. Прошу помощи у более опытных ребят, которые, возможно сталкивались с таким вопросом.

txt-файл, выложу сложением (он довольно длинный)

Я распарсил вот так:
Python
1
2
3
4
5
6
with open('exp.txt', 'r', encoding='utf-8') as file:
    res = file.readlines()
    new = [i.split('\t') for i in res]
    mass_res = []
    for line in new:
        mass_res.append([f'{line[1]},{line[3]},{line[9]},{line[12]}'])
Вложения
Тип файла: txt exp.txt (2.6 Кб, 12 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2022, 09:20
Ответы с готовыми решениями:

Получения файла *.com из файла *.тхт в кодировке ASCII для корректного рисования через псевдографику
Здравствуйте , задача: Создать программу типа .COM, которая в текстовом режиме выводит с помощью псевдографики изображения заданного...

Вычисление чисел в тхт файле в другой тхт
Здравствуйте! я начал интересоваться паскалем, так вот один мой программный код, который должен открыть файл (input.txt) там храняться...

преобразование АВС.ТХТ в файл 123.ТХТ
Написать программу, преобразующую файл АВС.ТХТ в файл 123.ТХТ. Строки изменяются по следующему правилу: все цифры заменяются на Содержимое...

23
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.04.2022, 09:23  [ТС]
Я по-сути сделал двумерный список, где каждая строка это тоже список с элементами, вопрос в том получится ли при таком парсинге всё это залить в базу.

Добавлено через 1 минуту
Вот результат:

['"user_name","user_phone","user_email"," user_ip"']
['"пп","","kakakaka@mail.ru","111.11.111. 111"']
['"Алина","","546ds@lackmail.net","111.11 1.111.22"']
['"Надежда","","ololo@lackmail.net","333. 111.222.111"']
['"Жанна","123456789","123321@alivance.co m","11.222.11.11"']
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
01.04.2022, 10:16
Цитата Сообщение от Damenikx Посмотреть сообщение
выложу сложением (он довольно длинный)
Браза, zip же есть
1
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,213
01.04.2022, 10:17
Damenikx, получится, чего бы ему не получиться? данные-то есть, данные структурированы. Про нормальные формы, конечно, можно сразу забыть, ибо это усложнит скрипт на порядок, но просто базу наполнить - почему бы и нет?
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
01.04.2022, 10:18
Цитата Сообщение от Damenikx Посмотреть сообщение
получится ли
Почему нет?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.04.2022, 10:23  [ТС]
iSmokeJC, Alli_Lupin, то бишь таким образом как оформлено сейчас всё будет норм я так понимаю. Окис, спасибо ребят. Пойду курить, как теперь это всё засунуть в sqlite
0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,213
01.04.2022, 10:24
Damenikx, просто нырни в алхимию.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.04.2022, 10:33  [ТС]
Alli_Lupin, предлагаешь для начала сделать csv, а потом вкинуть в sqlite? Или прост документацию читануть по алхимии?)
0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,213
01.04.2022, 10:34
Damenikx, второе)
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.04.2022, 11:26  [ТС]
Alli_Lupin, понял, спасибо

Добавлено через 33 минуты
В общем, я не правильно распирасил)) У меня получается вот список:

['"user_name","user_phone","user_email"," user_ip"']

а элементы списка это не по отдельности каждая фраза, а все слова вместе, как 1 элемент.

Добавлено через 11 минут
Мне получается надо как-то переписать код, чтобы он создавал список со списками каждого отдельного юзера, в котором будут содержаться информация об этом юзере как элементы списка, а не как один элемент...Что-то как-то сложно)))
0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,213
01.04.2022, 11:32
Damenikx, не заметил одинарные кавычки)) Посмотри в сторону 6-й строки. Подумай про двумерные массивы и про 4 append'а
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.04.2022, 11:36  [ТС]
Alli_Lupin, да-да, я понимаю, что там не верно, но я не понимаю, как мне добавить определённые элементы из одного двумерного списка, в другой. append() - не принимает несколько аргументов, по типу:

"я хочу добавить в новый массив, элементы под индексами 1 и 2"

mass.append(line[0])

То есть за раз я могу добавить только 1 элемент, а мне надо 4
0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,213
01.04.2022, 11:39
Damenikx, самый простой вариант - иметь 2 списка. В один добавляем 4 элемента из файлика, во второй - первый список) Это не правильно с точки зрения чистоты кода и идеологии пайтона, но очень наглядно)
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.04.2022, 11:40  [ТС]
Alli_Lupin, так я вот так и пытаюсь сделать)) прост пока не могу додуматься, как это всё написать.
0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,213
01.04.2022, 11:45
Лучший ответ Сообщение было отмечено Damenikx как решение

Решение

Damenikx,
Python
1
2
3
4
5
6
7
8
9
10
11
with open('exp.txt', 'r', encoding='utf-8') as file:
    res = file.readlines()
    new = [i.split('\t') for i in res]
    mass_res = []
    for line in new:
        mass_res_elems = []
        mass_res_elems.append(line[1])#,{line[3]},{line[9]},{line[12]}'])
        mass_res_elems.append(line[3])
        mass_res_elems.append(line[9])
        mass_res_elems.append(line[12])
        mass_res.append(mass_res_elems)
Вот в такую степь куда-то
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
01.04.2022, 11:46
Damenikx, не?
Python
1
2
3
4
5
6
7
8
with open('exp.txt', 'r', encoding='UTF-8')as f:
    res = []
    for i in f.readlines():
        j = i.split('\t')
        res.append((j[1].strip('"'), j[3].strip('"'), j[9].strip('"'), j[12].strip('"')))
 
for i in res:
    print(i)
Bash
1
2
3
4
5
('user_name', 'user_phone', 'user_email', 'user_ip')
('пп', '', 'kakakaka@mail.ru', '111.11.111.111')
('Алина', '', '546ds@lackmail.net', '111.111.111.22')
('Надежда', '', 'ololo@lackmail.net', '333.111.222.111')
('Жанна', '123456789', '123321@alivance.com', '11.222.11.11')
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.04.2022, 11:47  [ТС]
Alli_Lupin, я так пробовал, у меня почему-то, перемешиваются элементы, допустим, имя и телефон соответствует, а вот емейл не тот.
0
01.04.2022, 11:47

Не по теме:

Во. Пришёл лесник и показал как надо))

0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
01.04.2022, 11:51  [ТС]
iSmokeJC, ВОООООТ. Почему когда я прописываю в аппенд, несколько переменных, как Вы, то получаю это :

list.append() takes exactly one argument (2 given)

При этом у Вас работает?! НУ ВОТ КАК ТАК?!

Добавлено через 37 секунд
Я прописал вот так изначально:

Python
1
2
3
4
5
6
7
with open('exp.txt', 'r', encoding='utf-8') as file:
    res = file.readlines()
    new = [i.replace('"','').split('\t') for i in res[1:]]
    mass_res = []
    #print(new)
    for line in new:
        mass_res.append(line[1], line[3])
Добавлено через 1 минуту
Я походу догнал...суть в том что вы делаете кортеж который добавляете аппендом в список. Да?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
01.04.2022, 11:53
Лучший ответ Сообщение было отмечено Damenikx как решение

Решение

Именно так. Можно и не кортеж, а список (скобки только поменять). Не суть
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.04.2022, 11:53
Помогаю со студенческими работами здесь

Создание тхт файла
Здравствуйте, есть код: void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString tofile; char string1; ...

Чтение файла ТХТ С++
Здравствуйте у меня есть проблема с чтением файла файл input.txt нужно считывать так по группам если в первой строке есть у меня 2...

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

В по открытию тхт файла
У меня такая проблема: в любой программе, которую я создаю в проекте, при запуске VB указывает на ошибку в строке открывающей файл. Вот...

Чтение из тхт файла
Вообщем ситуация такая. Есть комбобокс и несколько текстбоксов, так же есть тхт файл, в котором записана примерно следующая инфа допустим...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru