summaryrefslogtreecommitdiff
path: root/freebase/fcl/fbutil.py
diff options
context:
space:
mode:
Diffstat (limited to 'freebase/fcl/fbutil.py')
-rwxr-xr-xfreebase/fcl/fbutil.py25
1 files changed, 18 insertions, 7 deletions
diff --git a/freebase/fcl/fbutil.py b/freebase/fcl/fbutil.py
index 1aaea5f..7ba051f 100755
--- a/freebase/fcl/fbutil.py
+++ b/freebase/fcl/fbutil.py
@@ -64,16 +64,27 @@ for k,vs in media_types.items():
media_type_to_extension[v] = k
+def dirsplit_unsafe(id):
+ """
+ Split a freebase id into a prefix and a tail, dealing with
+ trailing slashes, etc.
+
+ '/abc' -> '/', 'abc'
+ '/foo/bar' -> '/foo', 'bar'
+ 'foo/bar' -> 'foo', 'bar'
+ 'foo/bar/' -> 'foo', 'bar'
+ """
+ id = id.rstrip('/')
+ parts = id.rsplit("/", 1)
+ # if no "/" like "foo", then this comes back as ["foo"]
+ if len(parts) == 1:
+ return None, parts[0]
-DIRSPLIT = re.compile(r'^(.+)/([^/]+)$')
+ if not parts[0]:
+ return '/', parts[1]
-def dirsplit_unsafe(id):
- m = DIRSPLIT.match(id)
- if m is None:
- return (None, id)
- dir,file = m.groups()
- return (dir,file)
+ return parts
def dirsplit(id):
dir,file = dirsplit_unsafe(id)