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

Работа с csv файлом. Python

24.09.2024, 12:35. Показов 1223. Ответов 10

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

Есть код, читающий регуляркой json файл и перезаписывающий найденные данные в csv файл.
Возникли трудности с разбиением данных по столбцам.
Результат должен быть следующим:
1 столбец - (TA[0-9.]{4})
2 столбец - (\D(T[0-9.]{4,})\D)
3 столбец - (PT-CR-[0-9]{1,}:.[a-z,A-Z_: ]*[:.][а-я,А-Я,a-z,A-Z -.:][^"":]*)

Пробовал разбить данные непосредственно в Excel, подгружая туда файл итоговый csv файл, но почему-то разбивка идёт криво.

Прошу подсказать с решением проблемы

Добавлено через 40 минут
Почему-то код не сохранился в теле темы, поэтому прикладываю ответом
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
import re
import json
import csv
 
file_name = "1.json"
result_file_name = "2.csv"
 
with open(file_name, mode = 'r', encoding = "UTF-8", ) as my_file:
    my_text = my_file.read()
 
with open(result_file_name, mode = "w", encoding = "Windows 1251") as result_file:
    look_for = r'(TA[0-9.]{4})|(\D(T[0-9.]{4,})\D)|(PT-CR-[0-9]{1,}:.[a-z,A-Z_: ]*[:.][а-я,А-Я,a-z,A-Z -.:][^"":]*)'
    results1 = re.findall(look_for, my_text)
    for line in results1:
        #print(line)
        result_file.write(str(line) + "\n")
 
result_file_name2 = "3.csv"
 
with open(result_file_name, mode = 'r', encoding = "Windows 1251", ) as my_file2:
    my_text2 = my_file2.read()
 
with open(result_file_name2, mode = "w", encoding = "Windows 1251") as result_file2:
    look_for2 = r'[^\'/"",()]'
    results2 = re.findall(look_for2, my_text2)
    for line in results2:
        #print(line)
        result_file2.write(str(line))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2024, 12:35
Ответы с готовыми решениями:

Работа с csv файлом
filename = 'data_2017-12-27.csv' i = 0 c1 = 0 data = data1 = with open(filename) as fl: reader =...

Работа с csv файлом
import csv from itertools import zip_longest item_1 = region1 item_2 = region1 data = export_data = zip_longest(*data,...

Работа с csv файлом через numpy
import numpy as np import csv def load_data(filename=None): if filename == "./Social_Network_Ads.csv": header = ...

10
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
24.09.2024, 16:11
Цитата Сообщение от Snowshet Посмотреть сообщение
Есть код, читающий регуляркой json файл
Зачем Вы json читаете регуляркой? Пример данных в файле есть?
0
0 / 0 / 0
Регистрация: 03.08.2019
Сообщений: 17
11.10.2024, 11:06  [ТС]
Извиняюсь, что долго не давал ответ в тему.
Вот пример текста, по которому регулярка должна искать:

"matrix": {"TA0001": {"T1078": {"coveredByProduct": true, "expertRequired": false, "content": {"ru-RU": "sap_attack_detection: PT-CR-159: SAPASABAP_Trying_get_privileges: Попытка повысить привилегии в системе SAP\nsap_attack_detection: PT-CR-163: SAPASABAP_Wrong_user_type: Частое использование некорректного типа учетной записи при входе в систему\nsap_attack_detection: PT-CR-161: SAPASABAP_Using_various_accounts_on_one_ terminal: Использование на одном узле различных учетных записей с одного источника\nit_bastion: PT-CR-2175: SKDPUNT_Unusual_User_Activity_Time: Нехарактерное время работы пользователя\nit_bastion: PT-CR-2182: SKDPUNT_Unusual_User_Activity: СКДПУ НТ обнаружила активность давно не используемой учетной записи\nit_bastion: PT-CR-2173: SKDPUNT_Unusual_Access: Нехарактерное использование учетной записи или системы пользователем\nit_bastion: PT-CR-2176: SKDPUNT_Session_From_Different_Subnet: Сеанс пользователя из другой подсети\nsap_java_suspicious_user_activi ty: PT-CR-539: SAPASJAVA_Logon_of_significant_user: Пользователь вошел под учетной записью из черного списка\nsap_java_suspicious_user_activit y: {"TA0002": {"T1078": "T10278" suspicious_use "T103458"{"coveredByProduct": true, "expertRequired": false: PT-CR-2182: SKDPUNT_Unusual_User_Activity: СКДПУ НТ обнаружила активность давно не используемой учетной записи\nit_bastion:
0
115 / 100 / 15
Регистрация: 24.07.2019
Сообщений: 308
11.10.2024, 18:50
Snowshet, лучше разделить решение на две части - сначала прочитать файл json как json, а затем сохранить данные в нужном виде
0
0 / 0 / 0
Регистрация: 03.08.2019
Сообщений: 17
12.10.2024, 11:33  [ТС]
Попробую, отпишусь, если это действительно решит проблему - круто
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
12.10.2024, 13:19
Цитата Сообщение от nilske Посмотреть сообщение
прочитать файл json как json
о чём речь? можно пример показать?
понятно, что НЕ опен, А лоад, а далее?
0
0 / 0 / 0
Регистрация: 03.08.2019
Сообщений: 17
15.10.2024, 12:04  [ТС]
kazak, пример данных прислал, можете подсказать решение?
0
0 / 0 / 0
Регистрация: 03.08.2019
Сообщений: 17
16.10.2024, 09:11  [ТС]
nilske, ваша рекомендация не помогла(
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
16.10.2024, 09:16
Цитата Сообщение от Snowshet Посмотреть сообщение
nilske, ваша рекомендация не помогла(
рекомендация НЕ конкретная........
2
Цитата Сообщение от Snowshet Посмотреть сообщение
"matrix": {"TA0001": {"T1078": {"coveredByProduct": true, "expertRequired": false, "content": {"ru-RU": "sap_attack_detection: PT-CR-159: SAPASABAP_Trying_get_privileges: Попытка повысить привилегии в системе SAP\nsap_attack_detection: PT-CR-163: SAPASABAP_Wrong_user_type: Частое использование некорректного типа учетной записи при входе в систему\nsap_attack_detection: PT-CR-161: SAPASABAP_Using_various_accounts_on_one_ terminal: Использование на одном узле различных учетных записей с одного источника\nit_bastion: PT-CR-2175: SKDPUNT_Unusual_User_Activity_Time: Нехарактерное время работы пользователя\nit_bastion: PT-CR-2182: SKDPUNT_Unusual_User_Activity: СКДПУ НТ обнаружила активность давно не используемой учетной записи\nit_bastion: PT-CR-2173: SKDPUNT_Unusual_Access: Нехарактерное использование учетной записи или системы пользователем\nit_bastion: PT-CR-2176: SKDPUNT_Session_From_Different_Subnet: Сеанс пользователя из другой подсети\nsap_java_suspicious_user_activi ty: PT-CR-539: SAPASJAVA_Logon_of_significant_user: Пользователь вошел под учетной записью из черного списка\nsap_java_suspicious_user_activit y: {"TA0002": {"T1078": "T10278" suspicious_use "T103458"{"coveredByProduct": true, "expertRequired": false: PT-CR-2182: SKDPUNT_Unusual_User_Activity: СКДПУ НТ обнаружила активность давно не используемой учетной записи\nit_bastion:
это одна строка файла?
и как тут можно вычленить
Цитата Сообщение от Snowshet Посмотреть сообщение
1 столбец - (TA[0-9.]{4})
2 столбец - (\D(T[0-9.]{4,})\D)
3 столбец - (PT-CR-[0-9]{1,}:.[a-z,A-Z_: ]*[:.][а-я,А-Я,a-z,A-Z -.:][^"":]*)
??
0
0 / 0 / 0
Регистрация: 03.08.2019
Сообщений: 17
16.10.2024, 09:19  [ТС]
Ципихович Эндрю, ну у меня вычленяется то что нужно, согласно регулярке, и записывается все в одну строку также, и мне надо разбить это по столбцам.
0
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
17.10.2024, 19:21
Цитата Сообщение от Snowshet Посмотреть сообщение
"matrix": {"TA0001": {"T1078": {"coveredByProduct": true, "expertRequired": false, "content": {"ru-RU": "sap_attack_detection: PT-CR-159: SAPASABAP_Trying_get_privileges: Попытка повысить привилегии в системе SAP\nsap_attack_detection: PT-CR-163: SAPASABAP_Wrong_user_type: Частое использование некорректного типа учетной записи при входе в систему\nsap_attack_detection: PT-CR-161: SAPASABAP_Using_various_accounts_on_one_ terminal: Использование на одном узле различных учетных записей с одного источника\nit_bastion: PT-CR-2175: SKDPUNT_Unusual_User_Activity_Time: Нехарактерное время работы пользователя\nit_bastion: PT-CR-2182: SKDPUNT_Unusual_User_Activity: СКДПУ НТ обнаружила активность давно не используемой учетной записи\nit_bastion: PT-CR-2173: SKDPUNT_Unusual_Access: Нехарактерное использование учетной записи или системы пользователем\nit_bastion: PT-CR-2176: SKDPUNT_Session_From_Different_Subnet: Сеанс пользователя из другой подсети\nsap_java_suspicious_user_activi ty: PT-CR-539: SAPASJAVA_Logon_of_significant_user: Пользователь вошел под учетной записью из черного списка\nsap_java_suspicious_user_activit y: {"TA0002": {"T1078": "T10278" suspicious_use "T103458"{"coveredByProduct": true, "expertRequired": false: PT-CR-2182: SKDPUNT_Unusual_User_Activity: СКДПУ НТ обнаружила активность давно не используемой учетной записи\nit_bastion:
Если это неоработанные данные, тогда беда, это не json. Разбирать только ручками. У Вас в регулярке используется группировка, группы соединены ИЛИ, т.е. в результате поиска каждый результат будет содержать какую-то одну группу, вот эти группы и анализируйте.
Что-то в духе:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import re
 
data = '"matrix": {"TA0001": {"T1078": {"coveredByProduct": true, "expertRequired": false, "content": {"ru-RU": "sap_attack_detection: PT-CR-159: SAPASABAP_Trying_get_privileges: Попытка повысить привилегии в системе SAP\nsap_attack_detection: PT-CR-163: SAPASABAP_Wrong_user_type: Частое использование некорректного типа учетной записи при входе в систему\nsap_attack_detection: PT-CR-161: SAPASABAP_Using_various_accounts_on_one_terminal: Использование на одном узле различных учетных записей с одного источника\nit_bastion: PT-CR-2175: SKDPUNT_Unusual_User_Activity_Time: Нехарактерное время работы пользователя\nit_bastion: PT-CR-2182: SKDPUNT_Unusual_User_Activity: СКДПУ НТ обнаружила активность давно не используемой учетной записи\nit_bastion: PT-CR-2173: SKDPUNT_Unusual_Access: Нехарактерное использование учетной записи или системы пользователем\nit_bastion: PT-CR-2176: SKDPUNT_Session_From_Different_Subnet: Сеанс пользователя из другой подсети\nsap_java_suspicious_user_activity: PT-CR-539: SAPASJAVA_Logon_of_significant_user: Пользователь вошел под учетной записью из черного списка\nsap_java_suspicious_user_activity: {"TA0002": {"T1078": "T10278" suspicious_use "T103458"{"coveredByProduct": true, "expertRequired": false: PT-CR-2182: SKDPUNT_Unusual_User_Activity: СКДПУ НТ обнаружила активность давно не используемой учетной записи\nit_bastion: '
look_for = r'(TA[0-9.]{4})|\D(T[0-9.]{4,})\D|(PT-CR-[0-9]{1,}:.[a-z,A-Z_: ]*[:.][а-я,А-Я,a-z,A-Z -.:][^"":]*)'
results1 = re.findall(look_for, data)
total = []
s = []
for line in results1:
    if line[0] != "":
        s = [line[0]]
        continue
    elif line[1] != "":
        s.append(line[1])
        continue
    else:
        total.append([*s, line[2]])
 
print(total)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2024, 19:21
Помогаю со студенческими работами здесь

Работа с csv файлом (посчитать среднюю заплату по округу)
Допустим у меня есть csv файл с таким содержанием: "Федеральный округ;Субъект РФ;Денежные доходы в расчете на душу населения, руб./месяц ...

Работа с текстовым файлом. Python 3
Всем привет. Я в программировании недавно, поетому столкнулся с одной проблемкой. Задача такова: С текстового файла нужно вывести на...

Работа с текстовым файлом -Python
Доброго времени суток! Имеются главы на английском и русском языках книги. Задача: открыть, прочитать, закрыть файл и построить таблицу...

Работа с файлом csv
Есть файл students.csv, в котором содержится информация о студентах в виде: №;ФИО; Возраст; Группа 1;Иванов Иван Иванович;...

Работа с файлом csv
Пусть дан файл students.csv, в котором содержится информация о студентах в виде: №;ФИО;Возраст;Группа 1;Иванов Иван...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru