> On 7 Jun 2022, at 23:24, Dave <d...@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 <pyt...@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 -- https://mail.python.org/mailman/listinfo/python-list