我是Pyhthon的新手,并且一直坚持做一些工作。 我有一个.csv文件,有7列。 第一列包含某些文件的路径,例如:
Name
a/b/c.xyz
m/n/o/p.sad
p/q/r/s/t/u.asas
我需要将目录(路径)与文件分开,并将所有者分别为'a'
,'m'
,'p'
。我已经使用pandas导入了.csv文件。我已经读过os.path可能会有所帮助。任何建议都会非常感激。而且,我正在处理的数据非常大,所以需要注意执行脚本的开销。
感谢。
答案 0 :(得分:1)
您提到的os
模块知道三种不同的拆分变体
os.path.split os.path.splitdrive os.path.splitext
如果您只想要字符串的第一部分,请使用<str>.split('/')[0]
>>> 'p/q/r/s/t/u.asas'.split('/')
>>> 'p'
我还建议使用内置csv
模块来读取您的文件。熊猫似乎有点矫枉过正。
这里有关于如何使用该模块的好source。我特别喜欢csv.DictReader
类。
答案 1 :(得分:0)
如果您只想查找所有者和文件名,可以通过拆分来完成。
import csv
owner,file =[],[]
with open(filePath,'rb') as f:
reader = csv.reader(f)
for line in reader:
owner.append(line.split('/')[0])
file.append(line.split('/')[-1])
如果你需要找到文件路径并删除所有者,可以通过split和os.path.join来实现
import csv
import os
owner,file =[],[]
with open(filePath,'rb') as f:
reader = csv.reader(f)
for line in reader:
owner.append(line.split('/')[0])
file.append(os.path.join( *line.split('/')[1:] ))
os.path.join示例:
string = 'p/q/r/s/t/u.asas'
os.path.join( *string.split('/')[1:] )
output:
'q\\r\\s\\t\\u.asas'
答案 2 :(得分:0)
是你想要的吗?
In [64]: df
Out[64]:
Name
0 a/b/c.xyz
1 m/n/o/p.sad
2 p/q/r/s/t/u.asas
In [66]: df.Name.str.extract(r'(?P<owner>.)(?P<path>/.*)', expand=True)
Out[66]:
owner path
0 a /b/c.xyz
1 m /n/o/p.sad
2 p /q/r/s/t/u.asas