Python Forum

Full Version: Help creating a pattern using the re module
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I have written a python3 script to rename files based on a pattern input by the user. It has worked well, but I now am trying to create a pattern, and I am running into problems.

I have four types of filenames:
filename 1 - flubber.MP4
filename 2.MP4
filename 3 - flubber.mp4
filename 4.mp4


I am trying to create a pattern that will work on all these file names and rename them all as:
filename1.mp4
filename2.mp4
filename3.mp4
filename4.mp4
(This one of course would not be renamed)

I can easily accomplish this in two passes, but I would like to accomplish it in one pass. Help?
How do you easily accomplish this in two passes?
What's your code for the two-pass solution?

You mention that the 4th should not be renamed, but you actually remove a space. It might be good to clarify which it is.
(Jan-09-2019, 12:16 AM)micseydel Wrote: [ -> ]What's your code for the two-pass solution?

You mention that the 4th should not be renamed, but you actually remove a space. It might be good to clarify which it is.

Wow. I knew something was different. I couldn't find a way to edit my post, so allow me to correct it here.

I have written a python3 script to rename files based on a pattern input by the user. It has worked well, but I now am trying to create a pattern, and I am running into problems.

Correction:

I have four types of filenames:
filename1 - flubber.MP4
filename2.MP4
filename3 - flubber.mp4
filename4.mp4

I am trying to create a pattern that will work on all these file names and rename them all as:
filename1.mp4
filename2.mp4
filename3.mp4
filename4.mp4 (This one of course would not be renamed)

I can easily accomplish this in two passes, but I would like to accomplish it in one pass. Help?

(Jan-09-2019, 12:16 AM)Gribouillis Wrote: [ -> ]How do you easily accomplish this in two passes?

See my correction in response to micseydel.

My two-pass solution is:
1st pattern:
(.+)MP4$
Replacement:
\1mp4

2nd pattern:
(.+) - flubber(.+)
Replacement:
\1\2
You could replace (?: - flubber)?\.(?:mp|MP)4$ with .mp4
(Jan-09-2019, 07:38 AM)Gribouillis Wrote: [ -> ]You could replace (?: - flubber)?\.(?:mp|MP)4$ with .mp4

That worked great. Thanks a lot. I think it's making sense. But let me make sure I understand what I think I understand.

In this case when I compile a pattern and use patt.sub(repl, filename), I didn't need to capture the beginning of the string with (.+) because the entire string is already going to be returned with only the changes applied?

Thanks again.
Quote:the entire string is already going to be returned with only the changes applied?
Exactly Idea