0

これはおそらく最も一般的なファイル名解析の問題ではありませんが、次の形式でファイルのリストを表示するプログラムがあります。

Filename.extの場所

いくつかの例は

sampleFile.jpg C:\ Images \ my jpgs
別のfile.bmpC:\ Images \ myBmps

ファイル名と場所は1つのスペースで区切られます。示されているように、ファイル名にスペースを含めることができます。

各行からファイル名を抽出したいのですが、それを行うための良い方法が見つからないようです。特定の文字のインデックスを検索してから、0から(index-offset)までの部分文字列を抽出することを考えました。ここで、offsetは戻る必要のある文字数です。しかし、ハードコードされたオフセットが機能することを保証する検索可能な文字はないと思います。

4

3 に答える 3

2

行末までのドライブ文字で始まるものを取得するには、おそらく正規表現を使用します。たとえば、次のようになります。

 import re
 matchWinPaths = re.compile("^.*([A-Z]:\\.+$)")

次に、各行を

 matches = re.match(line, matchWinPaths)
 winPath = matches.group(1)
于 2011-04-19T15:08:07.893 に答える
1

.拡張子の直前以外のファイル名にピリオド( )がありますか?そうでない場合は、次のように解析できるはずです。

1 find first instance of '.'
2 step to the next space
3 that space is the delimiter between file name and location
于 2011-04-19T15:08:45.023 に答える
1

C:\、D:\など、明確な場所がある場合は、これらの文字を分割するだけです。

import re
f=open("file")
for line in f:
    print re.split("[C-Z]:",line)[0]
f.close(0
于 2011-04-19T15:10:03.700 に答える