【发布时间】:2021-06-29 17:50:02
【问题描述】:
我有一个如下所示的列表:
stuff = ['\n', '<td><nobr>8h</nobr></td>', '\n', '<td><nobr>2021-04-02 14:27:44.729</nobr></td>', '\n', '<td class="text-right">1.73</td>;', '\n']
我正在尝试清理它,使其看起来像这样:
stuff = ["8h","2021-04-02 13:27:44.729","1.73"]
我想要做的是:
for x in range(0,len(stuff),1):
stuff[x] = stuff[x].replace("\n","")
stuff[x] = stuff[x].replace("<td>","")
如果字符存在,我希望删除它们。如果没有,我希望这部分会被跳过。
我得到的错误信息是
NoneType 对象不可调用。
有什么建议吗?
编辑#1:
我相信这与 \n 值搞砸了有关。我不确定这是否准确,但这是我的感觉。
【问题讨论】:
-
为什么是
for x in range(0,len(stuff),1):而不是for x in stuff:?此外,这可能会有所帮助:Python code to remove HTML tags from a string. -
我会看一下链接,但使用 for x in range(0,len(stuff),1) 就是我一直这样做的方式。是否有理由使用 1 而不是另一个?
-
我在想,如果你在循环之前不小心将东西设置为 None。您是否尝试过使用断点单步执行代码并对其进行调试?另外,我假设在您的实际代码中,数组内容中的第二项也是一个字符串。现在只有 \n 是一个字符串。
-
for x in stuff更干净 - 除非您特别需要计算索引 -
如果你已经安装了,你可以使用beautifulsoup(好像你从网上抓取了这些数据)。然后从列表的每个元素中获取文本:soup = BeautifulSoup("
", "lxml") soup.find("td").text8h
标签: python python-3.x