python - 如何从 csv 数据中删除“kg”和“m”?
问题描述
我只想有价值观。我正在寻找从列中删除“m”和“kg”。到目前为止,这是我的代码,效果很好。但唯一的问题是“m”和“kg”。任何帮助将不胜感激!
import requests
import time
import csv
from bs4 import BeautifulSoup
from selenium import webdriver
#Main function
def getContent(link):
#Open Browser
browser = webdriver.Chrome()
#Go to link
browser.get(link)
#Pause
time.sleep(3)
#Source
html = browser.page_source
#Soup activate
soup = BeautifulSoup(html,'lxml')
#Find table
table = soup.find_all('table')
table2 = table[1]
#Save in csv
with open('averageheight.csv','w',newline='') as f:
writer = csv.writer(f)
writer.writerow(('Country','Average Height Male','Average Weight Male','Average BMI Male','Average Height Female','Average Weight Female','Average BMI Female'))
for tr in table2('tr')[1:]:
row = [(t.get_text(strip=True)).encode('utf-8') for t in tr(['td','th'])]
writer.writerow(row)
#Close browser
browser.close()
browser.quit()
#Links
getContent('https://www.worlddata.info/average-bodyheight.php')
这是当前输出
Country,Average Height Male,Average Weight Male,Average BMI Male,Average Height Female,Average Weight Female,Average BMI Female
b'Netherlands',b'',b'1.83 m',b'87.4 kg',b'26.1',b'',b'1.69 m',b'72.3 kg',b'25.3'
第二,第三,第四和第五列额外的'm'和'kg'。那些是我想要替换的。但还没有运气。
解决方案
从网页和您的输出数据中,数字和“kg”或“m”之间总是有一个空格。在这种情况下,关于空间的简单拆分可能会奏效。
将分配替换为row
以下内容:
row = [(t.get_text(strip=True)).split(" ")[0].encode('utf-8') for t in tr(['td','th'])]
在这里,我们将关于空格字符的每个标签文本值拆分并仅保留第一个值。
推荐阅读
- google-cloud-platform - Google Cloud Identity Platform SAML 身份验证请求签名
- web-scraping - Scrapy xpath 语法
- python - 结束循环后打印“for循环”数据
- kdb - 如何手动构造以下函数语句
- javascript - bot.login(token); 怎么样?输入意外结束?
- google-bigquery - 是否可以下载整个 Big Query 数据库?
- date - 尝试按迟到的任务过滤表格视觉对象,即日期 [计划完成] < 现在
- javascript - 将子元素添加到元素时的事件触发器
- list - 如何声明可空列表
- c++ - Lamport's Bakery Algorithm中如何绑定并制作唯一的票值?互斥体,C++