Вывод Excel CSV отображается неправильно после вызова файла Python - PullRequest
0 голосов
/ 15 декабря 2018

В настоящее время борется со следующим выводом в .csv, где их различные случайные символы в пределах - это имена и значения игроков, где не должно быть

(я привел картинку нижевывод)

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

Я пытаюсь удалитьсимволы ниже, такие как Â, Ã, ©, ‰ и так далее.Есть предложения?

Код Python

#importing

import requests
from bs4 import BeautifulSoup
import pandas as pd

headers = {'User-Agent': 
       'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like 
Gecko) Chrome/47.0.2526.106 Safari/537.36'}

#calling websites
page = "https://www.transfermarkt.co.uk/transfers/transferrekorde/statistik/top/plus/0/galerie/0?saison_id=2000"
pageTree = requests.get(page, headers=headers)
pageSoup = BeautifulSoup(pageTree.content, 'html.parser')

#calling players names
Players = pageSoup.find_all("a", {"class": "spielprofil_tooltip"})
#Let's look at the first name in the Players list.
Players[0].text

#calling value of players
Values = pageSoup.find_all("td", {"class": "rechts hauptlink"})
#Let's look at the first name in the Values list.
Values[0].text

PlayersList = []
ValuesList = []

for i in range(0,25):
   PlayersList.append(Players[i].text)
   ValuesList.append(Values[i].text)

df = pd.DataFrame({"Players":PlayersList,"Values":ValuesList})

df.to_csv('2000.csv', index=False)

df.head()

===================================================================

Вывод в Excel

The Output

Ответы [ 3 ]

0 голосов
/ 16 декабря 2018

ОБНОВЛЕНИЕ:

Я исправил эту ситуацию из следующего ответа по ссылке ниже ..

https://stackoverflow.com/a/6488070/10675615

  1. Сохранитьэкспортированный файл в виде csv в командной строке cmd
  2. Открыть Excel
  3. Импортировать данные, используя Данные -> Импорт внешних данных / Получить текст / CSV -> Импорт данных
  4. Выберите тип файла «csv» и перейдите к файлу
  5. В мастере импорта измените File_Origin на «65001 UTF» (или выберите правильный языковой идентификатор символа)
  6. Измените разделитель назапятая
  7. Выберите место для импорта и завершения. Таким образом, специальные символы должны отображаться правильно.

**

0 голосов
/ 16 декабря 2018

Похоже, ваша система записывает файл в кодировке UTF-8.Excel ожидает, что файлы UTF-8 будут иметь подпись спецификации, в противном случае предполагается, что текстовый файл закодирован в кодировке ANSI для конкретной локали.Это для обратной совместимости из-за Windows, существовавшей до UTF-8.

В Python есть кодировка, которая записывает подпись спецификации UTF-8, utf-8-sig, поэтому просто используйте:

df.to_csv('2000.csv', encoding='utf-8-sig', index=False)
0 голосов
/ 15 декабря 2018
...
utf8_bom = '\xEF\xBB\xBF'
with open('2000.csv', 'w') as csv_file:
    csv_file.write(utf8_bom)
    df.to_csv(csv_file, index=False, mode='a')

Объяснение: Спецификация - это знак порядка байтов (qv).Если Excel находит его в начале файла CSV, он использует его для определения кодировки, которая в вашем случае является UTF-8 (кодировка по умолчанию - правильно - для Python 3).


РЕДАКТИРОВАТЬ

Как отметил Марк Толонен, компактная версия приведенного ниже представляет собой следующий код:

df.to_csv('2000.csv', encoding='utf-8-sig', index=False)

-sig в названии кодировки означает«Подпись», т. Е. Спецификация в начале, которая используется программным обеспечением Microsoft для обнаружения кодировки.См. Также раздел Кодировки и Юникод руководства codecs.

...