Python 如何删除字符串右侧的额外文本?

Python 如何删除字符串右侧的额外文本?,python,web-scraping,strip,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_n

我试图得到一个汽车模型的名字,因为它出现在网站上,但由于某种原因(在尝试了以下所有),它似乎不起作用

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

有些索引返回干净的结果,但有些索引返回以下结果(滚动):

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

我已成功创建了一个for循环,该循环在该页面上的每辆车中循环,但数据框中的某些行由于额外的不需要的文本而被扩展。

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]获取型号名称的前五个元素,但如果要减去第一个系列元素,则只需将值更改为3。strip()有助于按空格分割模型名称。希望这有助于

.rstrip()
.strip()
仅去除空白(不可打印的字符),它们不会删除文本。谢谢,Burhan,并为此道歉。感谢修正案。你能删除某些字符后的文本吗?例如:在我的情况下,我们能这样做吗?是的,你需要研究正则表达式,但更重要的是,你需要找出这个特定列表的特殊之处,它会导致你的scrape无法工作。如果这只是源于原始网站的一个错误,那么您必须找到一种方法来检测这个特定的情况,并编写代码来处理它——或者如果这是由于您的解析不够健壮,您需要处理它。谢谢,Burhan!谢谢你的建议。我还是个新手,正在学习,所以上面的指导真的很有帮助。再次感谢
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)