使用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"))
太棒了!谢谢:)添加了一个函数!谢谢:)添加了一个函数