比较2个变量字符(Python)

时间:2018-09-05 15:09:01

标签: python string

我想比较2个字符串变量,并返回2个字符串之间共享的字符数。因此,Traceback (most recent call last): File "<ipython-input-16-278e482d38eb>", line 2, in <module> df = pd.ExcelFile(r"I:\usr\m1ars04\model_dev\test\suptot.xls") File "C:\Anaconda3\lib\site-packages\pandas\io\excel.py", line 169, in __init__ self.book = xlrd.open_workbook(io) File "C:\Anaconda3\lib\site-packages\xlrd\__init__.py", line 435, in open_workbook ragged_rows=ragged_rows, File "C:\Anaconda3\lib\site-packages\xlrd\book.py", line 107, in open_workbook_xls bk.fake_globals_get_sheet() File "C:\Anaconda3\lib\site-packages\xlrd\book.py", line 687, in fake_globals_get_sheet self.get_sheets() File "C:\Anaconda3\lib\site-packages\xlrd\book.py", line 678, in get_sheets self.get_sheet(sheetno) File "C:\Anaconda3\lib\site-packages\xlrd\book.py", line 669, in get_sheet sh.read(self) File "C:\Anaconda3\lib\site-packages\xlrd\sheet.py", line 1470, in read self.update_cooked_mag_factors() File "C:\Anaconda3\lib\site-packages\xlrd\sheet.py", line 1538, in update_cooked_mag_factors elif not (10 <= zoom <= 400): TypeError: unorderable types: int() <= NoneType() "work"将返回“ 1/4”,因为4个字母中的1个(在此示例中,仅"what")在两个字符串之间是相同的。

3 个答案:

答案 0 :(得分:1)

这使您可以看到两个单词在相同位置出现的字母数量:

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

zip为您同时为两个单词中的每个字符提供一个迭代器,每次匹配时您只需对1求和。

这为您提供了两个词在任何位置之间通常共享的字母:

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

这将创建两组字母,并采用两组字母的交点,并告诉您该交点的大小。

答案 1 :(得分:0)

您要这样吗?

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))))

这将获取存储在变量a中的字符串,循环遍历字符并与存储在变量b中的字符串进行比较。最后;它会打印存储在b中的字符串的长度中,a中也位于b中的字符数。

答案 2 :(得分:0)

您可能会考虑使用difflib,因为它似乎涵盖了您的用例,但也将其扩展到了不同长度的字符串。

示例1

import difflib

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

sequence_matcher.ratio() # 0.25

示例2

import difflib

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

sequence_matcher.ratio() # 0.889