在python中使用正则表达式从转换后的稀疏向量列表中删除离散值

问题描述 投票:0回答:1

我正在尝试从类似字符串列表中删除索引值为1、2和3的所有值['1:1','2:100.0','3:100.0',...]。数据为稀疏矢量格式,并已作为熊猫数据框加载。我使用了在线正则表达式测试器来成功匹配此列表的前三个位置。

但是由于它存在于我的程序中,所以相同的正则表达式不起作用。在运行中:

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'

有人有什么想法吗?预先感谢。

python-3.x sparse-matrix re
1个回答
0
投票

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)
    ...

有窍门。

© www.soinside.com 2019 - 2024. All rights reserved.