python-3.x - 在 python 中使用正则表达式从转换后的稀疏向量列表中删除离散值的问题
问题描述
我正在尝试从 ['1:1', '2:100.0', '3:100.0',...] 之类的字符串列表中删除索引值为 1、2 和 3 的所有值。数据采用稀疏矢量格式,并作为 pandas 数据框加载。我使用在线正则表达式测试器成功匹配了该列表的前三个位置。
但由于它存在于我的程序中,相同的正则表达式不起作用。运行时:
data = pd.read_csv("c:\data.csv")
for index, row in data.itterrows():
line = parseline(row)
def parseline(line):
line = line.values.flatten() # data like: ['1:1 2:100.0 3:100.0...']
stringLine = listToString(line) # data like: 1:1 2:100.0 3:100.0...
splitLine = stringLine.split(" ") # data like: ['1:1', '2:100.0', '3:100.0',...]
remove = re.findall(r"'1:1'|'[2,3]:\d+.\d+'")
splitLine.remove(remove)
print(splitLine)
我收到以下错误:
TypeError: findall() missing 1 required positional argument: 'string'
有没有人有任何想法?提前致谢。
解决方案
splitLine 对象实际上是一个列表,但 re.findall() 方法(以及实际使用的 re.sub() 方法)需要一个字符串,而不是一个列表。只是在错误的数据结构上操作。最终:
def parseline(line):
line = line.values.flatten().tolist()
stringLine = listToString(line)
stringLine = re.sub(r"1:1 |2:\d+.\d+ ", "", stringLine)
...
成功了。
推荐阅读
- android - Android:通过控制器添加带有 ids/onclick 的新布局元素
- c++ - 如何在 xCode Macbook 上编译和运行 C++ 项目
- mysql - 为什么我不能像在支持它的表上那样对递归视图发出相同的查询?
- splunk - 如何检查多值字段是否包含Splunk中其他字段的值
- html - CDK 焦点陷阱在使用 Shift Tab 在对话框外单击时中断
- javascript - 为什么我不能嵌入谷歌趋势图表?
- linux - 如何打印多个空格,然后在 bash 的同一行上打印单词?
- node-red - 是否可以在 Node-RED 上的一个函数中获取子流名称?
- javascript - JavaScript Date() 与 Safari 和非 Safari 实现不一致
- azure-powershell - Azure PowerShell Az 模块:为 Databricks 生成不记名令牌