python - 如何删除字符串右侧的多余文本?

标签 python web-scraping strip

我正在尝试获取网站上显示的汽车型号名称,但由于某种原因(在尝试了以下所有操作后),它似乎不起作用。

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = "https://www.carsales.com.au/cars/results?offset=12"
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
model_name = soup.find_all('a', attrs={'data-webm-clickvalue':'sv-view-title'})
final_model_name = model_name[1]
clean_model_name = final_model_name.text
clean_model_name = clean_model_name.replace("\r", "")
clean_model_name = clean_model_name.replace("\n", "")
clean_model_name = clean_model_name.strip()
clean_model_name = clean_model_name.rstrip()
print(clean_model_name)

我还创建了一个变量,其中包含我想要删除的整个句子(有效),然后在 strip 函数中对其进行解析,但它的 MY14 元素会根据汽车的年份而变化。为每年创建一个变量似乎效率不高。

一些索引返回干净的结果,但是其他索引返回以下内容(滚动):

2014 Holden Cruze SRi Z Series JH Series II Auto                                                     MY14                        Manufacturer Marketing Year (MY)                            The manufacturer's marketing year of this model.

我不需要汽车模型之后的任何细节 - 经过研究,strip() 应该删除两侧的空白(但在本例中没有)和 rstrip() 应该删除右侧的所有内容(但在本例中没有)

我已经成功创建了一个 for 循环,该循环遍历此页面上的每辆汽车,但由于额外的不需要的文本,DataFrame 中的某些行被扩展。

最佳答案

strip() 只会删除您正在使用的字符串前后的空白字符,您可以尝试以下操作:

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = "https://www.carsales.com.au/cars/results?offset=12"
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
model_name = soup.find_all('a', attrs={'data-webm-clickvalue':'sv-view-title'})
final_model_name = model_name[1]
clean_model_name = final_model_name.text
clean_model_name = clean_model_name.strip().split()[:5]
clean_model_name = ' '.join(clean_model_name)
print(clean_model_name)

我注意到大多数型号名称都有 5 个关键部分(年份、品牌和型号),因此我使用 [:5] 来获取型号名称的前五个元素,但如果您想减去第一个元素然后只需将Series元素的值更改为3。strip()有助于用空格分割模型名称。希望这有帮助

关于python - 如何删除字符串右侧的多余文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46067838/

相关文章:

python - 具有不同接口(interface)的派生类

python - scipy中重采样数组的索引

Python beautifulsoup - 获取输入值/TypeError : 'NoneType' object is not subscriptable

python - BeautifulSoup Python 脚本不再适用于挖掘简单的字段

python - 按多个字符将列表拆分为 block [Python]

python - 为什么python线程会减慢推理时间以实现更快的R-CNN

python - 使用 python 登录网站并进行网页抓取

stripe-payments - Stripe : Do I need to refund for uncaptured charges?

python - Python strip( ) 函数出错

python - String.strip() 重要性