簡體   English   中英

在不同長度的字符串中查找不同的字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM