0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 6
1

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

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

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

Python
1
line_shortfile in line_longfile
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2013, 18:55
Ответы с готовыми решениями:

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

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

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

Искать строку в документе word
Dim objWord As Object Dim i As Integer = 0 objWord =...

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

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

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
Код
water, hot
water2
water
содержимое файла /home/user/test/dict_sort.txt
Код
alnuts
water
выводится только water
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
17.12.2013, 16:09 7
mar00n, да прямо таки извращенец. Додумался в цикле пописывать открытие файла.
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
17.12.2013, 16:28 8
У прочитанных из файлов строк в конце '\n'.
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
17.12.2013, 16:36 9
А по поводу того, что находит только 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
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
17.12.2013, 16:40 10
tsar925, и это тоже. Могу предположить, что это добавилось, пока ТС пытался методом тыка пофиксить хоть как-то. А вот в первом посте как раз похоже:
Python
1
'water\n'
совсем не in
Python
1
'water2\n'
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
17.12.2013, 16:43 11
Вообще конечно эта глупая затея на мой взгляд, лучше метод find использовать. in совсем в других местах используется.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
17.12.2013, 17:07 12
Цитата Сообщение от 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  [ТС] 13
попробовал 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 минуты
результат
Код
-1
-1
-1
-1
-1
0
water
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
17.12.2013, 17:13 14
Цитата Сообщение от mar00n Посмотреть сообщение
в чем ошибка, ткните носом конкретно
Ты мое сообщение в конце первой страницы читал? Куда уже конкретнее?
0
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 6
17.12.2013, 17:29  [ТС] 15
попробовал 2 варианта ваших в конце первой страница, вывод только water, а как находить подстроку water в water2 и выводить ее?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
17.12.2013, 17:52 16
Цитата Сообщение от mar00n Посмотреть сообщение
попробовал 2 варианта
перед поиском выполни
Python
1
.rstrip('\n')
для обеих строк
1
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 6
17.12.2013, 18:33  [ТС] 17
accept вот за это спасибо
0
17.12.2013, 18:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2013, 18:33
Помогаю со студенческими работами здесь

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

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

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

Сделать программу которая в строке слов будет искать слово с максимальным количеством гласных
Нужна помощь. Нужно сделать программу которая в строке слов будет искать слово с максимальным...

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru