How to test characters of a string

Barry Scott barry at barrys-emacs.org
Wed Jun 8 13:09:25 EDT 2022



> On 7 Jun 2022, at 23:24, Dave <dave at looktowindward.com> wrote:
> 
> Yes, it was probably just a typeo on my part.
> 
> I’ve now fixed the majority of cases but still got two strings that look identical but fail to match, this time (again by 10cc), “I’m Mandy Fly Me”.
> 
> I’m putting money on it being a utf8 problem but I’m stuck on how to handle it. It’s probably the single quote in I’m, although it has worked with other songs.
> 
> Any ideas?

You can use difflib to give you a diff of the two strings:

:>>> print('\n'.join(difflib.unified_diff('abc', 'adc')))
---

+++

@@ -1,3 +1,3 @@

 a
-b
+d
 c
:>>>

The docs talk about lines, but difflib works on sequence. I use it a lot to find
differences within lines.

Barry



> 
> All the Best
> Cheers
> Dave
> 
> Here is the whole function/method or whatever it’s called in Python:
> 
> ################################################################################
> #
> #   checkMusicFiles
> #
> ################################################################################
> def checkMusicFiles(theBaseMusicLibraryFolder):
>    myArtistDict = []
> 
> #
> #  Loop thru Artists Folder
> #
>    myArtistsFoldlerList = getFolderList(theBaseMusicLibraryFolder)
>    myArtistCount = 0
>    for myArtistFolder in myArtistsFoldlerList:
>        print('Artist: ' + myArtistFolder)
> #
> #  Loop thru Albums Folder
> #
>        myAlbumList = getFolderList(theBaseMusicLibraryFolder + myArtistFolder)
>        for myAlbum in myAlbumList:
>            print('Album: ' + myAlbum)
> 
> #
> #  Loop thru Tracks (Files) Folder
> #
>            myAlbumPath = theBaseMusicLibraryFolder + myArtistFolder + '/' + myAlbum + '/'
>            myFilesList = getFileList(myAlbumPath)
>            for myFile in myFilesList:
>                myFilePath = myAlbumPath + myFile
>                myID3 = eyed3.load(myFilePath)
>                if myID3 is None:
>                    continue
> 
>                myArtistName = myID3.tag.artist
>                if myArtistName is None:
>                    continue
> 
>                myAlbumName = myID3.tag.album
>                if myAlbumName is None:
>                    continue
> 
>                myTitleName = myID3.tag.title
>                if myTitleName is None:
>                    continue
> 
>                myCompareFileName = myFile[0:-4]
>                if myCompareFileName[0].isdigit() and myCompareFileName[1].isdigit():
>                    myCompareFileName = myFile[3:-4]
> 
>                if myCompareFileName != myTitleName:
>                    myLength1 = len(myCompareFileName)
>                    myLength2 = len(myTitleName)
>                    print('File Name Mismatch - Artist: [' + myArtistName + ']  Album: ['+ myAlbumName + ']  Track: [' + myTitleName + ']  File: [' + myCompareFileName + ']')
>                    if (myLength1 == myLength2):
>                        print('lengths match: ',myLength1)
>                    else:
>                        print('lengths mismatch: ',myLength1,'  ',myLength2)
> 
>                        print('     ')
> 
> 
> 
> 
>    return myArtistsFoldlerList
> 
> 
> 
> 
> 
> 
>> On 8 Jun 2022, at 00:07, MRAB <python at mrabarnett.plus.com> wrote:
>> 
>> On 2022-06-07 21:23, Dave wrote:
>>> Thanks a lot for this! isDigit was the method I was looking for and couldn’t find.
>>> I have another problem related to this, the following code uses the code you just sent. I am getting a files ID3 tags using eyed3, this part seems to work and I get expected values in this case myTitleName (Track name) is set to “Deadlock Holiday” and myCompareFileName is set to “01 Deadlock Holiday” (File Name with the Track number prepended). The is digit test works and myCompareFileName is set to  “Deadlock Holiday”, so they should match, right?
>> OT, but are you sure about that name? Isn't it "Dreadlock Holiday" (by 10cc)?
>> 
>> [snip]
>> -- 
>> https://mail.python.org/mailman/listinfo/python-list
> 
> -- 
> https://mail.python.org/mailman/listinfo/python-list



More information about the Python-list mailing list