从python中的字符串中摆脱数字

时间:2019-02-02 04:03:23

标签: python web-scraping

我想从列表中的网站获取名称。

soup = bs4.BeautifulSoup(page.text, 'html.parser')
tbl = soup.find('ul', class_='static-top-names part1')
for link in tbl:
    names = link.get_text()

print(names)

因此,我试图从网站上获取一些名称,当我应用上述代码时,我将名称获取为。当我尝试对其进行迭代时,会得到以下输出。

  1. 约翰
  2. 标记
  3. 史蒂夫,依此类推。

我想摆脱文本数据中的数字,也只想以列表格式显示名称。

我想要得到的只是这些纯名称,并希望将它们放在列表中。有帮助吗?

3 个答案:

答案 0 :(得分:1)

如果格式始终为#. name,则可以执行以下操作:

name.split('. ', 1)[1]

答案 1 :(得分:0)

您可以简单地用'分割。点字符,或者如果名称前有空格,甚至还有一个空格。

因此name.split('' )[-1] name.split('.')[-1]仅给出名称。然后,您可以将这些名称附加到列表中。

类似这样的事情。

names = [link.get_text().split(' ')[-1] for link in tbl]

这将为您提供名称列表,之后我使用[-1]作为列表索引,因为您的文本在用空格分割后仅包含两项。因此,如果还有更多项目,请使用适当的索引。

答案 2 :(得分:0)

使用正则表达式保持一致性。

import re

s = '1.TEST'

print(re.sub('\d+.','',s)) 

只会给您测试。这将消除与点以下数量的任何尺寸。基本上,更换任何数量,然后用空点。

遍历原始列表并使用列表理解功能同时执行以上操作

new_list = [re.sub('\d+.','',s) for s in original_list]

这应该给你新的列表按照您的要求。