简体   繁体   中英

Comparing 2 variables characters (Python)

I want to compare 2 string variables and return the number of characters that are shared between the 2 strings. So "work" and "what" would return "1/4" since 1 out of 4 letters (only w in this example) are the same between the 2 strings.

This gives you the number of letters that appear in both words in the same position:

sum(1 for a, b in zip(word1, word2) if a == b)

zip gives you an iterator for each character in both words at the same time, and you simply sum 1 for each time they match.

This gives you the generally shared letters between both words in any position:

len(set(word1) & set(word2))

This creates two sets of letters, takes the intersection of both sets, and tells you how big that intersection is.

Are you asking for something like this?

a = "hello"
print(list(a))

b = "hell"

counter=0
for x in list(a):
    if x in list(b):
    counter+=1

print(str(counter)+"/"+str(len(list(b))))

This is taking the string stored in variable a, looping through the characters and comparing to the string stored in variable b. Finally; it prints the number of characters in a that were also in b over the length of the string stored in b.

You might what to consider using difflib as it seems to cover your usecase but also extends it to strings of different lengths.

Example 1

import difflib

sequence_matcher = difflib.SequenceMatcher(a='work', b='what')

sequence_matcher.ratio() # 0.25

Example 2

import difflib

sequence_matcher = difflib.SequenceMatcher(a='work', b='works')

sequence_matcher.ratio() # 0.889

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM