Re: How to check for single character change in a string?
Roy Smith r...@panix.com wrote: In article roy-aaaeea.10571424122...@news.panix.com, Roy Smith r...@panix.com wrote: len([x for x in zip(s1, s2) if x[0] != x[1]]) Heh, Ian Kelly's version: sum(a == b for a, b in zip(str1, str2)) is cleaner than mine. Except that Ian's counts matches and the OP asked for non-matches, but that's an exercise for the reader :-) :-) I'm actually walking through a directory tree and checking that file characteristics don't change in a sequence of files. What I'm looking for is 'unusual' changes in file characteristics (they're image files with camera information and such in them) in a sequential list of files. Thus if file001, file002, file003, file004 have the same camera type I'm happy, but if file003 appears to have been taken with a different camera something is probably amiss. I realise there will be *two* character changes when going from file009 to file010 but I can cope with that. I can't just extract the sequence number because in some cases they have non-numeric names, etc. -- Chris Green -- http://mail.python.org/mailman/listinfo/python-list
How to check for single character change in a string?
Can anyone suggest a simple/easy way to count how many characters have changed in a string? E.g. giving results as follows:- abcdefg abcdefh 1 abcdefg abcdekk 2 abcdefg gfedcba 6 Note that position is significant, a character in a different position should not count as a match. Is there any simpler/neater way than just a for loop running through both strings and counting non-matching characters? -- Chris Green -- http://mail.python.org/mailman/listinfo/python-list
Re: How to check for single character change in a string?
On Sat, Dec 24, 2011 at 8:26 AM, tinn...@isbd.co.uk wrote: Can anyone suggest a simple/easy way to count how many characters have changed in a string? E.g. giving results as follows:- abcdefg abcdefh 1 abcdefg abcdekk 2 abcdefg gfedcba 6 Note that position is significant, a character in a different position should not count as a match. Is there any simpler/neater way than just a for loop running through both strings and counting non-matching characters? No, but the loop approach is pretty simple: sum(a == b for a, b in zip(str1, str2)) -- http://mail.python.org/mailman/listinfo/python-list
Re: How to check for single character change in a string?
In article th7hs8-one@chris.zbmc.eu, tinn...@isbd.co.uk wrote: Can anyone suggest a simple/easy way to count how many characters have changed in a string? Depending on exactly how you define changed, you're probably talking about either Hamming Distance or Levenshtein Distance. I would start with the wikipedia articles on both those topics and explore from there. There are python packages for computing many of these metrics. For example, http://pypi.python.org/pypi/python-Levenshtein/ Is there any simpler/neater way than just a for loop running through both strings and counting non-matching characters? If you don't care about insertions and deletions (and it sounds like you don't), then this is the way to do it. It's O(n), and you're not going to get any better than that. It's a one-liner in python: s1 = 'abcdefg' s2 = 'abcdekk' len([x for x in zip(s1, s2) if x[0] != x[1]]) 2 But go read the wikipedia articles. Computing distance between sequences is an interesting, important, and well-studied topic. It's worth exploring a bit. -- http://mail.python.org/mailman/listinfo/python-list
Re: How to check for single character change in a string?
In article roy-aaaeea.10571424122...@news.panix.com, Roy Smith r...@panix.com wrote: len([x for x in zip(s1, s2) if x[0] != x[1]]) Heh, Ian Kelly's version: sum(a == b for a, b in zip(str1, str2)) is cleaner than mine. Except that Ian's counts matches and the OP asked for non-matches, but that's an exercise for the reader :-) -- http://mail.python.org/mailman/listinfo/python-list
Re: How to check for single character change in a string?
On 24 December 2011 16:10, Roy Smith r...@panix.com wrote: In article roy-aaaeea.10571424122...@news.panix.com, Roy Smith r...@panix.com wrote: len([x for x in zip(s1, s2) if x[0] != x[1]]) Heh, Ian Kelly's version: sum(a == b for a, b in zip(str1, str2)) is cleaner than mine. Except that Ian's counts matches and the OP asked for non-matches, but that's an exercise for the reader :-) Here's a variation on the same theme: sum(map(str.__ne__, str1, str2)) -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list
Re: How to check for single character change in a string?
On Dec 24, 11:09 am, Arnaud Delobelle arno...@gmail.com wrote: sum(map(str.__ne__, str1, str2)) Mirror, mirror, on the wall. Who's the cleanest of them all? -- http://mail.python.org/mailman/listinfo/python-list