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

Разделение строки по двоеточию

29.06.2015, 20:48. Показов 9515. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день/вечер. Начал изучать Python и тут столкнулся с проблемой разделения строки. Нужно чтобы строка разделялась знаком ":", все что до знака ":" записывалось в переменную "login", а все что после этого знака в переменную "pas".

Пример нужной работы:
- Открытие заданного файла
- Разделение
- Работа с ними:
site.ru/login/login?login&pas
- Цикл работы до окончания переменных "login" и "pas"


Проще сказать как брутофорс.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2015, 20:48
Ответы с готовыми решениями:

Определить, сколько символов строки предшествует двоеточию
Дана строка символов,среди которых есть двоеточие( : ).Определить,сколько символов ему предшествует

Разделение строки
Есть функция на ms sql 2008 r2 ALTER FUNCTION .() RETURNS TABLE AS RETURN ( SELECT...

Разделение строки
Добрый вечер Имеется такой кусок кода( ошибка сегментирования), в котором происходит разбивание...

Разделение строки
Помогите пожалуйста Есть такая задача: дан текстовый файл, содержащий переписку, но записана она...

12
Эксперт по компьютерным сетям
5898 / 3355 / 1035
Регистрация: 03.11.2009
Сообщений: 10,003
29.06.2015, 20:52 2
Python
1
2
a = "login:password"
(login, pas) = a.split(':')
0
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 3
29.06.2015, 21:07  [ТС] 3
Jabbson, дело не пошло(

Весь код:

Python
1
2
file = open('copy.txt').read();
(login, pas) = file.split(':');
Ошибка:
Python
1
2
3
4
5
6
7
8
9
10
Python 3.4.0 (default, Jun 19 2015, 14:20:21) 
[GCC 4.8.2] on linux
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
Traceback (most recent call last):
  File "/home/vlad/Документы/Checker.py", line 2, in <module>
    (login, pas) = file.split(':');
ValueError: too many values to unpack (expected 2)
>>>
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
29.06.2015, 21:35 4
Если я правильно понял, что лежит в файле, то скорее всего это должно выглядеть так:
Python
1
2
for i in open('copy.txt').read():
    print(i.split(':'))
это во 1, во 2 точки с запятой не нужны вообще, ну, а в 3 покажи, что конкретно у тебя в файле записано.
0
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 10
29.06.2015, 21:38 5
Ну можешь залепить что-то плана такого:

Python
1
login, pas = map(str, s.split(':'))
Потом все в массивы добавить.
(python 2.7.6)
0
1 / 1 / 0
Регистрация: 18.11.2012
Сообщений: 37
29.06.2015, 21:38 6
Stafel, у тебя ValueError, скорее всего, из-за того, что в считанном не одно двоеточие.

Пример:
Python
1
2
st = "abra:kada:bra"
st.split(":")    # вернёт list из трёх строк
а ты пытаешься получить две
вот он тебе и говорит "too many values to unpack (expected 2)" — "слишком много значений для распаковки (ожидалось 2)".
0
141 / 141 / 38
Регистрация: 20.02.2012
Сообщений: 597
30.06.2015, 08:25 7
Python
1
2
file = open('copy.txt').read()
login, pas = file.split(':', 1)
0
Эксперт NIX
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
30.06.2015, 17:28 8
ilnurgi, или
Python
2
login, pas = file.split(':')[:2]
0
141 / 141 / 38
Регистрация: 20.02.2012
Сообщений: 597
01.07.2015, 08:28 9
Marinero, имхо, мой эффективнее
0
Эксперт NIX
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
01.07.2015, 11:00 10
ilnurgi, но менее корректен
Python
1
2
3
4
5
6
7
>>> a = 'login:pass1:comment'
>>> log, passw = a.split(':', 1)
>>> passw
'pass1:comment'
>>> log, passw = a.split(':')[:2]
>>> passw
'pass1'
1
141 / 141 / 38
Регистрация: 20.02.2012
Сообщений: 597
01.07.2015, 11:04 11
эх
0
Эксперт NIX
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
01.07.2015, 11:08 12
ilnurgi, ещё как вариант
Python
1
login, pas, trash = file.split(':', 2)
но будет ошибка, если < 3 элементов, так что мой вариант самый оптимальный
1
21 / 34 / 14
Регистрация: 23.07.2014
Сообщений: 148
05.07.2015, 02:02 13
Python
1
2
3
4
5
s = file.strip().split(':')
if len(s) > 2:
    (log,pas),args = s[:2],s[3:] # py3 - log,pas,*args = s
else:
    log,pas = s
0
05.07.2015, 02:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.07.2015, 02:02
Помогаю со студенческими работами здесь

Разделение строки в C++
Как делить строку по символу, ну то есть в python всё до безумия просто, пишешь .split(&quot;,&quot;) и...

Разделение строки
Зададим правило разделения строки: если кол-во символов – чётно, то в результате разделения строки...

Разделение строки
Всем привет, добрые люди. Хочу поделить одну строку с цифрами на много строк. $get_str_exm =...

Разделение строки
Доброго здравия, камрады! Собсно вопрос - имеем строку - представление числа в какой-либо системе...

Разделение на строки
Как в генераторе сделать что бы первые 6 чисел были на первой строчке, следующие 6 чисел на...

Разделение строки
Подскажите как поступить(я профан). У меня есть 4 строки из стихотворения, записанные в одну. Мне...

Разделение строки
Здравствуйте, вопросик такой есть: Допустим, есть строка: &quot;/TEXT parameters from text&quot; и сама суть...


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

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

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