我想比较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"
)在两个字符串之间是相同的。
答案 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
,因为它似乎涵盖了您的用例,但也将其扩展到了不同长度的字符串。
import difflib
sequence_matcher = difflib.SequenceMatcher(a='work', b='what')
sequence_matcher.ratio() # 0.25
import difflib
sequence_matcher = difflib.SequenceMatcher(a='work', b='works')
sequence_matcher.ratio() # 0.889