Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 6

Как искать строку в строке?

16.12.2013, 18:55. Показов 1855. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не пойму почему данное выражение ищет в строке только оканчивающейся на подстроку , например
line_shortfile - water
line_longfile - water2 не найдет, water hot тоже не найдет, а hot water найдет совпадение

Python
1
line_shortfile in line_longfile
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2013, 18:55
Ответы с готовыми решениями:

Как искать строку в файлах?
Обеспечить возможность поиска заданной строки: а) во всех файлах текущей директории б) во всех файлах по всей файловой системе...

Как искать определенное слово именно в строке?
Здравствуйте Как искать определенное слово именно в строке номер которого я сам укажу, а не во всем тексте. Под словом строка имею виду...

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

16
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.12.2013, 21:03
Объясни все заново и подробней. Из всего этого почти ничего не понятно.
0
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 6
16.12.2013, 21:35  [ТС]
код выше, если задать line_shortfile - water
line_longfile - water2 совпадения не будет, что-то я не понимаю, пробовал и find и in
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
16.12.2013, 21:43
Python
1
2
3
4
5
6
>>> line_shortfile = 'water'
>>> line_longfile = 'water2'
>>> 
>>> line_shortfile in line_longfile
True
>>>
1
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.12.2013, 22:25
Python
1
2
3
4
5
6
7
8
>>> 'aaaa' in 'bba'
False
>>> 'aaaa' in 'aab'
False
>>> 'aaaa' in 'aaaab'
True
>>> 'hot water' in 'hot water'
True
Оператор in проверяет на вхождение. В принципе из примеров выше думаю все понятно.
1
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 6
17.12.2013, 09:41  [ТС]
кто может подсказать, почему тогда вот так не работает? хочу сравнить один файл с другим, но не строка со строкой последовательно, а каждую строку одного файла со всеми строками другого файла и так далее

Python
1
2
3
4
5
6
7
8
9
10
myFile = open('/home/user/test/out.txt', 'w')
with open('/home/user/test/list_test.txt', 'r') as longfile:
    for line_longfile in longfile:
        with open('/home/user/test/dict_sort.txt', 'r') as shortfile:
            for line_shortfile in shortfile:
                if line_shortfile in line_longfile:
                    myFile.write(line_longfile)
                    print line_longfile
                    break
myFile.close()
содержимое файла
/home/user/test/list_test.txt
Code
1
2
3
water, hot
water2
water
содержимое файла /home/user/test/dict_sort.txt
Code
1
2
alnuts
water
выводится только water
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
17.12.2013, 16:09
mar00n, да прямо таки извращенец. Додумался в цикле пописывать открытие файла.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
17.12.2013, 16:28
У прочитанных из файлов строк в конце '\n'.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
17.12.2013, 16:36
А по поводу того, что находит только water, так тут все правильно. У тебя получается, что сравнивается list_test.txt с dict_sort.txt и например в строке "water", не "water, hot". in выдаст совпадение только в обратном случае, если сравниваться будет dict_sort.txt с list_test.txt.

Добавлено через 16 секунд
Somebody, не в этом дело.

Добавлено через 2 минуты
Вот посмотри на вывод двух вариантов:
Python
1
2
3
4
5
6
file1 = open('2.txt').readlines()
file2 = open('1.txt').readlines()
for i in file1:
    for j in file2:
        if i in j:
            print(i, j)
Python
1
2
3
4
5
6
file1 = open('1.txt').readlines()
file2 = open('2.txt').readlines()
for i in file1:
    for j in file2:
        if i in j:
            print(i, j)
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
17.12.2013, 16:40
tsar925, и это тоже. Могу предположить, что это добавилось, пока ТС пытался методом тыка пофиксить хоть как-то. А вот в первом посте как раз похоже:
Python
1
'water\n'
совсем не in
Python
1
'water2\n'
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
17.12.2013, 16:43
Вообще конечно эта глупая затея на мой взгляд, лучше метод find использовать. in совсем в других местах используется.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
17.12.2013, 17:07
Цитата Сообщение от tsar925 Посмотреть сообщение
in совсем в других местах используется
python.org. stdtypes
While the in and not in operations are used only for simple containment testing in the general case, some spe******ed sequences (such as str, bytes and bytearray) also use them for subsequence testing:
python.org. str.find()
Note

The find() method should be used only if you need to know the position of sub. To check if sub is a substring or not, use the in operator:
0
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 6
17.12.2013, 17:11  [ТС]
попробовал find, тоже самое, в чем ошибка, ткните носом конкретно

Python
1
2
3
4
5
6
7
8
9
10
11
12
myFile = open('/home/user/test/out.txt', 'w')
with open('/home/user/test/list_test.txt', 'r') as longfile:
    for line_longfile in longfile:
        with open('/home/user/test/dict_sort.txt', 'r') as shortfile:
            for line_shortfile in shortfile:
                print line_longfile.find(line_shortfile)
                if not line_longfile.find(line_shortfile) < 0:
#                if line_shortfile in line_longfile:
                    myFile.write(line_longfile)
                    print line_longfile
                    break
myFile.close()
Добавлено через 2 минуты
результат
Code
1
2
3
4
5
6
7
-1
-1
-1
-1
-1
0
water
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
17.12.2013, 17:13
Цитата Сообщение от mar00n Посмотреть сообщение
в чем ошибка, ткните носом конкретно
Ты мое сообщение в конце первой страницы читал? Куда уже конкретнее?
0
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 6
17.12.2013, 17:29  [ТС]
попробовал 2 варианта ваших в конце первой страница, вывод только water, а как находить подстроку water в water2 и выводить ее?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
17.12.2013, 17:52
Цитата Сообщение от mar00n Посмотреть сообщение
попробовал 2 варианта
перед поиском выполни
Python
1
.rstrip('\n')
для обеих строк
1
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 6
17.12.2013, 18:33  [ТС]
accept вот за это спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.12.2013, 18:33
Помогаю со студенческими работами здесь

Искать строку в документе word
Dim objWord As Object Dim i As Integer = 0 objWord = CreateObject(&quot;Word.Application&quot;) objWord.Visible = False...

Regex искать строку до определенного слова
Подскажите, пожалуйста, как можно найти все до слова &quot;else&quot;? string S = &quot;Arr = OV else return;&quot; // найти надо это &quot;Arr =...

macros значение в строке искать во всех столбцах и заменять цвета
Привет, помогите сделать макрос. запись макроса в экселе выглядит так. Sub Ìàêðîñ3() Range(&quot;H1&quot;).Select ...

Метод, который будет искать две одинаковые буквы в строке
В строке имеются только две одинаковых буквы. Найти их. помогите пожалуйста, нужно написать метод, который будет искать две одинаковые...

Искать в строке 3 одинаковые буквы, идущие подряд и записывать только одну
дана строка, должен искать 3 одинаковые буквы, идущие подряд и записывать только одну, например: в исходном файле было...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru