Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 6, 2011 16:25:52

refresh
От:
Зарегистрирован: 2010-11-27
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

не удается убрать перевод каретки \n

Добрый день. Читаю файл построчно, потом вывожу так:

print 'Proxy {} on port {} is VALID. Testing time -{} '.format(addr,port,res_time)
и вот после переменной port вывод начинается с новой строки. т.е получается вот так:

Proxy 209.203.29.66 on port 8080
is VALID. Testing time -3
уже и srip('\n') делал и replace('\n',''), ничего не помогает. С помощью notepad++ посмотрел везде только один символ перевода строки.



Офлайн

#2 Янв. 6, 2011 18:06:28

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

не удается убрать перевод каретки \n

Откуда берёте port?
Попробуйде отрезать последний символ:

print 'Proxy {} on port {} is VALID. Testing time -{} '.format(addr, str(port)[:-1], res_time)



Офлайн

#3 Янв. 6, 2011 18:33:34

refresh
От:
Зарегистрирован: 2010-11-27
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

не удается убрать перевод каретки \n

К сожалению не помогло. вырезка кода:

file = open(proxy_list,'rb').readlines()
goodfile = open(good_list,'wb')
real_ip = get_ip()
for line in file:
try:
addr,port=line.split(':') # вот от сюда беру port
файл вида:
209.203.29.66:8080
123.123.1.1:334
201.76.190.251:3128
68.83.99.68:8085
72.44.82.43:3128
216.18.21.190:8080
______________________________________________
UPD

Помог срез , но почему? ведь \n это один символ len('1\n2') = 3



Отредактировано (Янв. 6, 2011 18:38:00)

Офлайн

#4 Янв. 6, 2011 19:06:55

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

не удается убрать перевод каретки \n

refresh
но почему? ведь \n это один символ
В виндах - два. Всмысле не \n - 2 символа, а перевод строки организуется двумя символами.



Отредактировано (Янв. 6, 2011 19:07:48)

Офлайн

#5 Янв. 6, 2011 21:12:38

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

не удается убрать перевод каретки \n

UsCr
а перевод строки организуется двумя символами.
именно, а если подробнее, это \r\n



Офлайн

#6 Янв. 7, 2011 00:54:56

refresh
От:
Зарегистрирован: 2010-11-27
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

не удается убрать перевод каретки \n

ага, уже разобрался, спасибо =)



Офлайн

#7 Янв. 7, 2011 01:02:01

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

не удается убрать перевод каретки \n

refresh
file = open(proxy_list,'rb').readlines()
Проблема в том что вы файл в бинарном режиме окрыли, поэтому и мучаетесь с “лишними” символами.



Офлайн

#8 Янв. 7, 2011 04:08:39

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

не удается убрать перевод каретки \n

> Проблема в том что вы файл в бинарном режиме окрыли, поэтому и мучаетесь с “лишними” символами.
Бинарный режим тут ни при чём (2.6.6), так всегда было.

> addr, port = map(str.strip, line.rsplit(':', 1))

..bw



Офлайн

#9 Янв. 7, 2011 04:46:10

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

не удается убрать перевод каретки \n

>>> p = r'c:\test.txt'
>>> open(p, 'w').write('1111\n22222\n33333\n')
>>> open(p, 'r').read()
'1111\n22222\n33333\n'
>>> open(p, 'rb').read()
'1111\r\n22222\r\n33333\r\n'
вроде как бинарный режим причем



Офлайн

#10 Янв. 7, 2011 07:47:59

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

не удается убрать перевод каретки \n

У меня нет возможности под виндой проверить, но в линухе этот флажок на “вырезание” \r не влияет. Т.е. 'r' вместо 'rb' это ни в коем случае не решение обсуждаемой проблемы.

>>> open('/home/bw/tmp/foo.txt', 'r').read()
'123\r\nqwe\r\nasd\r\n'
>>> open('/home/bw/tmp/foo.txt', 'rb').read()
'123\r\nqwe\r\nasd\r\n'
..bw



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version