从文本文件中的行分区内容

时间:2017-05-15 18:59:29

标签: python partitioning

我在文本文件中有一些数据,主要是文件夹路径

home/user/Desktop/arandomname/2017/01
home/user/Desktop/couldbeanothername/2017/01
home/user/Desktop/guesswhatname/2017/01

我想在" Desktop /"之间选择字符串。和" / 2017",我尝试使用职位但由于字符串长度不同而肯定无法工作

目前我正在使用

for i in content:
    print i.partition('/')[-1].rpartition('/20')[0]

输出达到

home/user/Desktop/arandomname
home/user/Desktop/couldbeanothername
home/user/Desktop/guesswhatname

有什么建议吗?

4 个答案:

答案 0 :(得分:1)

使用split()

needed_data = content.split("/")[3]

答案 1 :(得分:0)

使用re模块

In [88]: re.match(r'.*Desktop/(.*)/2017.*', "home/user/Desktop/arandomname/2017/01").group(1)
Out[88]: 'arandomname'

答案 2 :(得分:0)

您可以使用正则表达式:

s = 'home/user/Desktop/arandomname/2017/01'
re.findall("Desktop/([^/]+)/\d{4}", s)[0]
# 'arandomname'

或直接搜索:

m = s[s.index('Desktop/') + len('Desktop/') : ]
m[ : m.index('/')]
# 'arandomname'

答案 3 :(得分:0)

您可以使用pathlib module

from pathlib import Path

content = [
    'home/user/Desktop/arandomname/2017/01',
    'home/user/Desktop/couldbeanothername/2017/01',
    'home/user/Desktop/guesswhatname/2017/01']

for strg in content:
    path = Path(strg)
    print(path.parts[3])

# prints:
# arandomname
# couldbeanothername
# guesswhatnam

path.parts返回构成路径的目录(和文件)的元组。

模块提供了更多与路径相关的方法,以备不时之需。