У меня проблема при разборе http-запросов.У меня есть такие данные в .txt по ссылке
https://drive.google.com/open?id=1RSyCYgxBCJnxAXDInyIs1cOp_3EoUyqG
Я пытаюсь преобразовать эти данные в формат CSV, но специальные символы, такие как ';'разделить данные на новые столбцы
Пример: данные в столбце «Принять» должны выглядеть следующим образом: текст / xml; q = 0,6, application / rtf; q = 0,7, изображение / *
но когда я выполняю код, я получаю данные в этом столбце в виде text / xml и q = 0,6 выходит в новый столбец.
Единственное решение, которое я нашел, было преобразовать строку одинарных кавычек в двойные кавычкии затем сохранил строку, но это не сработало. из
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import urllib.parse
from sklearn import tree
from sklearn.ensemble import RandomForestClassifier
import io
from sklearn.svm import LinearSVC
from sklearn.metrics import confusion_matrix
import os
import json
import csv
from itertools import islice
import numpy as np
import pandas as pd
fields = ['Start - Id', 'class', 'Method', 'Url', 'Protocol', 'Content- Length','Content-Language','Content-Encoding','Content-Location','Content-MD5','Content-Type','Expires','Last-Modified', 'Host', 'Connection', 'Accept', 'Accept-Charset', 'Accept-Encoding', 'Accept-Language', 'Cache-Control','Client-ip', 'Cookie', 'Cookie2', 'Date', 'ETag', 'Expect', 'From', 'If-Modified-Since', 'If-Unmodified-Since', 'If-Match', 'If-None-Match', 'If-Range','Max-Forwards', 'MIME-Version', 'Pragma', 'Proxy-Authorization', 'Authorization', 'Range', 'Referer', 'TE', 'Trailer', 'User-Agent', 'UA-CPU', 'UA-Disp', 'UA-OS', 'UA-Color', 'UA-Pixels', 'Via', 'Transfer-Encoding', 'Upgrade', 'Warning', 'X-Forwarded-For', 'X-Serial-Number', '~~~~~','----']
listofKeys = dict.fromkeys(fields)
def init(file_out):
with open(file_out, 'w', encoding="utf-8") as csvfile:
csvwriter = csv.writer(csvfile, delimiter="\t")
csvwriter.writerow(fields)
def write(file_out, lines):
with open(file_out, 'a', encoding="utf-8") as csvfile:
csvwriter = csv.writer(csvfile, delimiter ="\t")
row = []
N = len(lines)
foundP = False
for i in range(N-1):
line = lines[i].strip()
if len(line)>0:
if i==2:
listofKeys['Method'] = line.split(" ")[0]
listofKeys['Url'] = line.split(" ")[1]
listofKeys['Protocol'] = line.split(" ")[2]
if(line.startswith("PUT") or line.startswith("POST")):
foundP = True
elif i==N-3 :
if foundP == True:
listofKeys['Url'] += (line)
else:
index = line.find(':')
key = line[0:index].strip()
value = line[index+1:].strip()
listofKeys[key] = str(value)
for keys in fields:
row.append(listofKeys[keys])
print(type(row))
print(row)
csvwriter.writerow(row)
def convertText2Csv(file_in, file_out):
init(file_out)
with open(file_in, 'r') as infile:
lines = []
count = 0
for line in infile:
if line.startswith("Start"):
count+=1
print("-------------------------------------------------------------------Request #",count," -------------------------------------------------------------------------")
lines.append(line)
elif line.startswith("End"):
lines.append(line)
write(file_out, lines)
lines = []
else:
lines.append(line)
csvFile = 'test.csv'
textFile = 'test.txt'
convertText2Csv(textFile, csvFile)
Результат, который я получаю, приведен в ссылке https://drive.google.com/open?id=1rLPdbuZkS6pcDQqHZZP6ck9H8XbnMPWM
Я просто хочу преобразовать данныев CSV-файл с каждым столбцом, содержащим определенное значение со специальными символами, если оно присутствует