使用Python在SQLite数据库的列中断开要使用的文件的路径?

使用Python在SQLite数据库的列中断开要使用的文件的路径?,python,regex,sqlite,sqlalchemy,Python,Regex,Sqlite,Sqlalchemy,我有以下格式的文件路径列表 /media/odroid/pen/lol.mp3 (*) /media/odroid/pen/rev1/lol2.mp3 (**) 我的目标是创建一个包含6列(dir1、dir2、dir3、dir4、dir5、name)的SQLite DB,并将这些文件路径放在其中,因此(*)和(**)看起来像(很抱歉图形表示不好): 我目前使用的是str.split('/'),但处理起来很复杂,因为它需要对长度进行不同的处理。我看到有人在使用正则表达式,但我不知道如何(甚至不是

我有以下格式的文件路径列表

/media/odroid/pen/lol.mp3 (*)
/media/odroid/pen/rev1/lol2.mp3 (**)
我的目标是创建一个包含6列(dir1、dir2、dir3、dir4、dir5、name)的SQLite DB,并将这些文件路径放在其中,因此(*)和(**)看起来像(很抱歉图形表示不好):


我目前使用的是
str.split('/')
,但处理起来很复杂,因为它需要对长度进行不同的处理。我看到有人在使用正则表达式,但我不知道如何(甚至不是一个人)同时在数据库中插入正则表达式。有人能给我提供一个指南或示例代码吗?

尝试使用此正则表达式:

/\/?([\w\d]+)??\/?([\w\d]+)??\/?([\w\d]+)??\/?([\w\d]+)??\/?([\w\d]+)??\/([\w\d\.]+)$/
你必须一个接一个地阅读路径
您将有6组结果(可能7组,另外一组包含整个字符串)。除最新的组外,每个组都是“惰性”的,这意味着组将从字符串末尾填充。

尝试使用以下正则表达式:

/\/?([\w\d]+)??\/?([\w\d]+)??\/?([\w\d]+)??\/?([\w\d]+)??\/?([\w\d]+)??\/([\w\d\.]+)$/
你必须一个接一个地阅读路径
您将有6组结果(可能7组,另外一组包含整个字符串)。每个组(最新的组除外)都是“惰性”的,这意味着组将从字符串末尾填充。

正则表达式是一个选项,但是为什么不使用
拆分
?
保持简单:

path = "/media/odroid/pen/lol.mp3"
cols = path[1:].split("/")
for i in range(6-len(cols)):
  cols.insert(0, "none")

# => ['none', 'none', 'media', 'odroid', 'pen', 'lol.mp3']
或者使用函数

def getColsForPath(path):
  cols = path[1:].split("/")
  for i in range(6-len(cols)):
    cols.insert(0, "none")
  return cols


print(getColsForPath("/media/odroid/pen/lol.mp3"))
print(getColsForPath("/media/odroid/pen/rev1/lol2.mp3"))

正则表达式是一个选项,但是为什么不使用
split
? 保持简单:

path = "/media/odroid/pen/lol.mp3"
cols = path[1:].split("/")
for i in range(6-len(cols)):
  cols.insert(0, "none")

# => ['none', 'none', 'media', 'odroid', 'pen', 'lol.mp3']
或者使用函数

def getColsForPath(path):
  cols = path[1:].split("/")
  for i in range(6-len(cols)):
    cols.insert(0, "none")
  return cols


print(getColsForPath("/media/odroid/pen/lol.mp3"))
print(getColsForPath("/media/odroid/pen/rev1/lol2.mp3"))

太棒了!谢谢:)添加了一个函数!谢谢:)添加了一个函数