python - How to remove all nonnumber string characters from list?
问题描述
I have a list I want to remove all non numeric string values from.
list = ['$\\mathdefault{10}$', '$\\mathdefault{30}$', '$\\mathdefault{50}$']
would become:
newlist = [10,30,50]
I have tried:
>> [x for x in mylist if not isinstance(x, str)]
>> [x for x in mylist if isinstance(x, int)]
>> [x for x in mylist if isinstance(x, float)]
all return empty: []
presumably because even the numbers are strings.
How to achieve: [10,30,50]
?
解决方案
newlist = [int(''.join(char for char in string if char.isdigit())) for string in mylist]
你实际上正在做一些事情,这就是为什么你最终会得到这个粗糙的 1-liner。列表中的每个项目都需要删除所有非数字字符。这就是char.isdigit()
部分。然后需要将剩余的数字字符串字符连接在一起。这就是''.join(...)
部分。然后需要将它们转换为 intint(...)
部分。所有这些都包含在列表推导中,因此您最终得到了一个整数列表。
>> [x for x in mylist if not isinstance(x, str)]
>> [x for x in mylist if isinstance(x, int)]
>> [x for x in mylist if isinstance(x, float)]
这些都不起作用的原因是它们作用于列表中的整个字符串,而不是每个字符串中的字符。此外,即使它们是数字字符,它们仍然是字符串。所以isinstance()
不会将它们与字母和其他字符分开。
推荐阅读
- c# - 我想在远程主机上将 .exe 作为网络服务器运行
- c# - Azure - Web 部署任务失败 [System.AggregateException - WebToolsException] ERROR_COULD_NOT_CONNECT_TO_REMOTESVC
- mysql - Mysql触发器,根据一个列值将行从一个表复制到另一个表
- c# - 如何在我的代码中修复 NullReferenceExeption?
- c# - 使用 Google.Apis.Calendar.v3 c#, asp.net mvc 在日历上使用 Google Hangout 会议(googlemeet),
- python - 无法安装熊猫
- reactjs - 我应该如何在 React 中流式传输大型本地视频文件?
- javascript - webdriverio测试可以在Unix上执行吗
- android - 无法解析 android 应用程序模块的
- python - Web3-Py:Nonce 事务覆盖问题