10

Нужно найти в строке: входит ли данная строчка в строку или нет. например, есть строка sdfssf sddff svvsef xbsdf sdfwwe нужно узнать входит ли в нее dff или нет.

m9_psy
  • 6,449
fil23
  • 151

4 Answers4

22
if "dff" in "sdfssf sddff svvsef xbsdf sdfwwe":
    print u"Входит!"
LinnTroll
  • 4,686
  • 2
    опередил на 4 секунды=) – spirit Jul 12 '13 at 07:32
  • а если нужно узнать с какой позиции входит? – fil23 Jul 12 '13 at 07:35
  • в комментариях нельзя оформлять красиво код?
    try:
        index = s1.index("dff")
    except ValueError:
        print "substring not found"
    
    – spirit Jul 12 '13 at 07:41
  • 2
    использовать метод find.
    s1 = "sdfssf sddff svvsef xbsdf sdfwwe"
    index = s1.find('dff')
    
    

    Этот код делает ровно то же самое, что и в ответе ниже, но выглядит опрятнее, т.к. оно без вложенности.

    – R_cassum Jul 12 '13 at 08:12
  • полностью согласен. – spirit Jul 12 '13 at 08:14
  • а если надо или или то можно так ? if "dff" or "svv" in "sdfssf sddff svvsef xbsdf sdfwwe": – fil23 Jul 12 '13 at 08:35
  • if "a" in s or "b" in s: – spirit Jul 12 '13 at 08:43
4

https://pythonworld.ru/tipy-dannyx-v-python/stroki-funkcii-i-metody-strok.html Это ссылка на сайт, где все есть. А так можно посчитать количество вхождений:

S1 = 'sdfssf sddff svvsef xbsdf sdfwwe'
S2 = 'dff'
Count = S1.count(S2)
if Count == 0:
    print('Не входит')
else:
    print('Входит')

Если что - S.count(str) - это функция, которая считает количество вхождений str в S

0

Если нужно найти слово в строке с % вероятностью вот ссылка: https://github.com/AndreSci/Find-word-in-string-percent/blob/main/Percent_text_find.py

line_1 - слово которое ищешь. line_2 - где ищешь. 100 - это вероятное совпадения.

def find_word_per(line_1, line_2, percent=100):
max_found = 0

for item_1 in range(len(line_1)):

for item_2 in range(len(line_2)):
    index_found = 0

    if line_1[item_1] == line_2[item_2]:

        for index in range(len(line_2) - item_2):
            if item_1 + index >= len(line_1):
                break
            elif line_1[item_1 + index] == line_2[item_2 + index]:
                index_found += 1
    if max_found < index_found:
        max_found = index_found

result_per = (100 / len(line_1)) * max_found

return result_per >= percent

Может кому поможет, мою проблему решил.

  • Это ответ на какой-то другой вопрос – insolor Jan 13 '22 at 13:44
  • Добавил сюда так-как меня поисковики часто сюда бросали. – Andrew Terleckiy Jan 13 '22 at 13:48
  • 1
    Лучше не добавлять ответ не подходящий под вопрос, а добавить отдельный вопрос с подробным описанием проблемы (сейчас не очень очевидно, что такое совпадение с вероятностью) и своим ответом. И возможно вам еще добавят другие варианты ответов. – insolor Jan 13 '22 at 13:51
  • почему не подходящий? test_find("dff", "sdfssf sddff svvsef xbsdf sdfwwe", 100) # True – Andrew Terleckiy Jan 13 '22 at 13:55
  • Потому что в вопросе нужно просто определить, есть ли подстрока в строке. Это решается одним выражением (через in). У вас какая-то другая проблема. Предположим, у кого-то будет похожая проблема, но он на свой вопрос не найдет ответ, потому что ваш ответ не под вопросом с подробным описанием именно вашей проблемы (который будет проиндексирован поисковиками), а где-то под вопросом с совсем другой проблемой. – insolor Jan 13 '22 at 13:58
  • Технически, возможно ваш код и может решать проблему из вопроса, но для такой простой проблемы он слишком переусложнен. – insolor Jan 13 '22 at 14:01
  • Рекомендуете создать новую тему с своим решение? И еще раз добавил сюда свой ответ из-за поисковиков. – Andrew Terleckiy Jan 13 '22 at 14:01
  • Тут нет тем, есть вопросы и ответы. Да, рекомендую создать вопрос и добавить ему свой ответ. То что пришли на этот вопрос из поисковиков это еще не значит, что ваш код подходит под вопрос. – insolor Jan 13 '22 at 14:04
0

Можно с помощью множеств, например при чтении с файла пропускать строки, в которые входит определенное слово:

ignore = ['str1', 'str2', 'str3', 'str4']

with open(file,"r") as f:
    for line in f.readlines():
        if not (set(ignore) & set(line.split())):
            print(line, end="")