当前在.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输出
答案 0 :(得分:2)
time
说明:BOM是byte order mark(q.v。)。如果Excel在CSV文件的开头找到了它,它将使用它来确定编码,在您的情况下为UTF-8(对于Python 3,默认编码是正确的)。
编辑
正如Mark Tolonen所指出的,上述代码的精简版是以下代码:
setinterval
编码名称中的let isint = (num) => {
if(num % 1 == 0 ) {
return true
} else {
return false
}
}
function numlength(num) {
return num.toString().length
}
let time = 0
setInterval(() => time += 1, 1);
let primes = [2,3]
console.log(1)
console.log(2)
console.log(3)
function primecalc(primearray) {
let isprime = true
let NOP = 2
for(let num = 3; num > 2 ;num += 2){
isprime = true
for(i of primearray) {
if(isint(num / i) == true ) {
isprime = false
}
}
if( isprime == true) {
NOP += 1
primes.push(num)
console.log(`prime:${num} number of primes:${NOP} number of
miliseconds:${time}`)
if(numlength(num) > 10000) {
return num
}
}
}
}
代表“签名”,即开头的BOM,Microsoft软件使用它来检测编码。另请参见Encodings and Unicode手册的codecs
部分。
答案 1 :(得分:1)
您的系统似乎正在写入编码为UTF-8的文件。 Excel希望UTF-8文件具有BOM签名,否则它假定文本文件以特定于语言环境的ANSI编码进行编码。由于Windows在UTF-8之前已经存在,因此是为了向后兼容。
Python的编码可以写入UTF-8 BOM签名utf-8-sig
,因此只需使用:
df.to_csv('2000.csv', encoding='utf-8-sig', index=False)
答案 2 :(得分:0)
更新:
我已经通过下面链接中的以下答案解决了这种情况。
https://stackoverflow.com/a/6488070/10675615
- 在cmd提示符下将导出的文件另存为csv
- 打开Excel
- 使用数据导入数据->导入外部数据/获取文本/ CSV->导入数据
- 选择“ csv”文件类型并浏览到您的文件
- 在导入向导中,将File_Origin更改为“ 65001 UTF”(或选择正确的语言字符标识符)
- 将定界符更改为逗号
- 选择要导入的位置并完成,这样可以正确显示特殊字符。
**