windows - Python String parsing: filnavne med mellemrum

Indlæg af Hanne Mølgaard Plasc

Problem



Dette er nok ikke det mest almindelige filnavnsparsingproblem, men jeg har et program, der viser en liste over filer i følgende format:


Filename.ext Location


Nogle eksempler ville være


sampleFile.jpg C:Imagesmy jpgs
another file.bmp C:ImagesmyBmps


Filnavnet og placeringen adskilles af et enkelt rum. Som vist kan jeg have mellemrum i mit filnavn.


Jeg vil udpakke filnavnet fra hver linje, men kan ikke synes at finde en god måde at gøre det på.
Jeg tænkte på at søge indekset for en bestemt karakter og derefter udtrække substring fra 0 til (indeks - offset), hvor forskydning er antallet af tegn, jeg skal gå tilbage. Men jeg tror ikke, der er et tegn, som jeg kunne søge på, der vil sikre en hardcoded offset ville fungere.

Bedste reference


Jeg bruger nok en regex til at tage fat på noget, der startede med et drevbogstav til slutningen af ​​linjen, noget som:


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


derefter matche hver linje med


 matches = re.match(line, matchWinPaths)
 winPath = matches.group(1)

Andre referencer 1


Har du perioder (.) i dine filnavne, bortset fra i slutningen lige før forlængelsen? Hvis ikke, skal du kunne analysere noget som dette:


1 find first instance of '.'
2 step to the next space
3 that space is the delimiter between file name and location

Andre referencer 2


Nå, hvis du har en særskilt placering, f.eks. C: \, D: \ osv., Kan du bare opdele disse tegn


import re
f=open("file")
for line in f:
    print re.split("[C-Z]:",line)[0]
f.close(0