Как бы я обнаружил повторяющиеся элементы строки из другой строки в Python? - PullRequest
1 голос
/ 04 ноября 2019

Итак, как мне найти дублирующий элемент строки из другой строки в python, используя в основном одну-две строки или быстрое исправление?

, например,

str1 = "abccde"
str2 = "abcde"
# gets me c

Посредством использования str2 обнаружение дублирующего элемента в str1, поэтому обнаружение, что str1 имеет дубликат элемента в str2. Не уверен, есть ли способ сделать это через .count, например, str1.count (str2) или что-то в этом роде.

Я использую это контекстуально для своего назначения палача, и я начинающий программист, поэтому мыиспользуя в основном встроенные функции и основы для заданий, и в моем цикле есть часть моего кода, которая будет продолжать печатать, потому что она вызывает двойные буквы.

Пример. привет, шлифование, выдумка.

Итак, я в значительной степени создал «использованную» строку, и я пытаюсь сравнить ее с моим правильным списком букв, и догадки «добавлены», поэтому я могу избежать этого.

примечание: они будут введены, поэтому я не смогу сказать или просто жестко закодировать букву c, если это имеет смысл.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 04 ноября 2019

Использование set с str.count:

def find_dup(str1, str2):
    return [i for i in set(str1) if str1.count(i) > 1 and i in set(str2)]

Вывод:

find_dup("abccde", "abcde")
# ['c']
find_dup("abcdeffghi" , "aaaaaabbbbbbcccccddeeeeefffffggghhiii") # from comment
# ['f']
0 голосов
/ 04 ноября 2019

Я предполагаю, что, возможно, вы пытаетесь написать метод, подобный следующему:

def duplicate_string(str1: str, str2: str) -> str:
    str2_set = set(str2)
    if len(str2_set) != len(str2):
        raise ValueError(f'{str2} has duplicate!')

    output = ''
    for char in str1:
        if char in str2_set:
            str2_set.remove(char)
        else:
            output += char

    return output


str1 = "abccccde"
str2 = "abcde"

print(duplicate_string(str1, str2))

Вывод

ccc

Здесь мы сначала выдадим ошибку, если str2 Сам был дубликат. Затем мы перебираем str1, либо удаляем символ из str1_set, либо добавляем дубликат в строку output.

0 голосов
/ 04 ноября 2019

Ciao,

Вы в основном ищете функцию сравнения между двумя строками. Адаптация этого прекрасного ответа

import difflib

cases=[('abcccde', 'abcde')] 

for a,b in cases:     
    print('{} => {}'.format(a,b))  
    for i,s in enumerate(difflib.ndiff(a, b)):
        if s[0]==' ': continue
        elif s[0]=='-':
            print(u'The second string is missing the "{}" in position {} of the first string'.format(s[-1],i))
        elif s[0]=='+':
            print(u'The first string is missing the "{}" in position {} of the second string'.format(s[-1],i))    
    print() 

Вывод

abcccde => abcde
The second string is missing the "c" in position 3 of the first string
The second string is missing the "c" in position 4 of the first string

Надеюсь, это поможет и хорошего дня,Antonino

...