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

How do I remove extra text to the right of a string?

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

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 元素会根据汽车的年份而变化。为每年创建一个变量似乎效率不高。

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

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

我不需要汽车模型后的任何细节 - 经过研究,strip() 应该删除任何一侧的白色 space(但在这种情况下不需要)和 rstrip() 应该删除右边的所有内容(但在这种情况下它不会)

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

strip() 只会删除您正在处理的字符串前后的白色 space 字符,您可以试试这个:

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] 来获取型号名称的前五个元素,但是如果你想减去第一个系列元素然后只需将值更改为 3。strip() 有助于将模型名称拆分为 spaces。希望这有帮助