![](/img/trans.png)
[英]Finding unique characters based on order from inputs of different lengths in DataFrame
[英]Finding different characters in strings of different lengths
我有一些代碼來查找字符串之間的差異。 目前,它適用於相同長度的字符串,但我正在嘗試使其適用於不同長度的字符串。 我怎樣才能做到這一點
我添加了一個新的變量longest_seq
來嘗試解決此問題,但是我不確定如何使用它。
ref_seq = "pandabears"
map_seq = "pondabear"
longest_seq = map_seq
if len(ref_seq) > len(map_seq):
longest_seq == ref_seq
for i in range(len(longest_seq)):
if ref_seq[i] != map_seq[i]:
print i, ref_seq[i], map_seq[i]
對於Python 2,可以為此使用itertools.izip
:
from itertools import izip
for i, j in izip(ref_seq, map_seq):
if i != j:
print i, j
輸出:
a o
在Python 3中,您可以使用內置的zip
函數:
for i, j in zip(ref_seq, map_seq):
if i != j:
print(i, j)
zip
存在於Python 2中,但建議使用itertools.izip
,因為它會按需生成元組(在每次迭代中都會生成一個新的元組),而不是一次構建所有元組,而在Python 3中, zip
作用與itertools.izip
的相同Python 2。
這樣的事情應該可以解決問題。
def different_characters(reference, target):
# So we don't accidentally index the shorter string past its ending
ending = min(len(reference), len(target))
for i in range(ending):
if reference[i] != target[i]:
print(i, reference[i], target[i])
longer_str = reference if len(reference) > len(target) else target
for i in range(ending, len(longer_str)):
print(i, longer_str[i], '<empty>')
different_characters('pandabears', 'pondabear')
哪個會打印:
1 a o
9 s <empty>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.