Чтение с Python CSV, который содержит сложные строки - PullRequest
0 голосов
/ 25 октября 2018

У меня есть файл, который я пытаюсь прочитать в Pandas DataFrame, в котором есть столбец со сложной строкой.Строка содержит вывод HTML и похожа на следующее:

"<!DOCTYPE html PUBLIC \\"-//W3C//DTD HTML 4.0 Transitional//EN\\">\n', '<html>\n', '<head>\n', '<meta http-equiv=\\"Content-Type\\" content=\\"text/html; charset=UTF-8\\">\n', '<meta charset=\\"utf-8\\">\n', '<title>An Amazon.com Gift Card you sent has been redeemed</title>\n', '</head>\n', '<body>\n',

До сих пор я пробовал следующее:

df = pd.read_csv("<filename>",nrows = 50)

, который возвращает следующее .head():

enter image description here

Я пытался использовать "escapechar= ", но, должно быть, не получил правильный синтаксис.

Для ясностиэта HTML-строка будет одной частью всего CSV-файла, а приведенная выше строка будет только одной ячейкой данной строки.Ниже приведен пример строки файла CSV.В этом CSV обслуживается 24 столбца:

"241279","EMAIL_ADDRESS","EMAIL_ADDRESS","1607be7d4f2d66af","<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"URL\">
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
<meta charset=\"utf-8\">
<title>An Amazon.com Gift Card you sent has been redeemed</title>
</head>
<body>
<img width=\"1\" height=\"1\" src=\"URL\">
Greetings from Amazon.com,<br><br>

We wanted to let you know you that an Amazon.com Gift Card you sent has been redeemed.<br><br>
The gift card was emailed by Amazon to EMAIL_ADDRESS on DATE.<br><br>
Details:<br><br>

   Order # NUMBER<br>
   Sent to: EMAIL_ADDRESS<br>
   Date sent: DATE<br>
   Message: Here is a \"thank you\" for ... <br><br>

Please note: This email was sent from a notification-only address that cannot accept incoming email.
Please do not reply to this message.<br><br>
<img width=\"1\" height=\"1\" src=\"URL\">
</body>
</html>
","DATE 01:47:58","gmail","email",,,"An Amazon.com Gift Card you sent has been redeemed","DATE","DATE","f","23",,"EMAIL_ADDRESS","EMAIL_ADDRESS",,"f","EMAIL_ADDRESS","EMAIL_ADDRESS","9","f"

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Данные имеют escape-символ \, который не является значением по умолчанию.Со следующим:

df = pd.read_csv(<filename>,header=None,escapechar='\\')

Я получил:

>>> df
           0              1              2                 3   \
0  \n"241279"  EMAIL_ADDRESS  EMAIL_ADDRESS  1607be7d4f2d66af   

                                                  4              5      6   \
0  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Tr...  DATE 01:47:58  gmail   

      7   8   9  ...  14  15             16             17  18  19  \
0  email NaN NaN ...  23 NaN  EMAIL_ADDRESS  EMAIL_ADDRESS NaN   f   

              20             21  22 23  
0  EMAIL_ADDRESS  EMAIL_ADDRESS   9  f  

[1 rows x 24 columns]
0 голосов
/ 25 октября 2018

Поскольку значение по умолчанию quotechar для pd.read_csv равно ", следует использовать quotechar="'".

...