我正在尝试从类似字符串列表中删除索引值为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'
有人有什么想法吗?预先感谢。
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)
...
有窍门。