使用python

时间:2016-04-07 12:34:27

标签: python csv pandas

我是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可能会有所帮助。任何建议都会非常感激。而且,我正在处理的数据非常大,所以需要注意执行脚本的开销。

感谢。

3 个答案:

答案 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