Не важно ли это, включая границы, действительно, строго говоря, то, что вы пытаетесь сделать, на самом деле не имеет смысла. Помните, что при непрерывном распределении вероятности вероятность получения определенного значения бесконечно мала, так что математически говоря, вы никогда не увидите точного значения 1.
Конечно, в мире компьютеров, распределение RNG не является по-настоящему непрерывным, так что «возможно», что вы столкнетесь с определенным значением (независимо от того, что это означает), но тот факт, что вы полагаетесь на ограничение того, как хранятся реальные числа, намекает на проблемы с вашим подходом к любой проблеме, которую вы пытаетесь решить.
Один подход, если вам нужно избежать пробелов в символах и оставить только 3000 символов.
char_count = 30
curr_char_count = 0
complete_str = ""
for line in fhand :
new_line = line.decode().replace(" ", "")
if len(complete_str) + len(new_line) <= char_count:
complete_str = complete_str + new_line
else:
complete_str = complete_str + new_line[:((len(complete_str)+len(new_line)) - char_count)]
break
print complete_str
Там нет принятого ответа, почему? Существует 2 ответа на «(2) отображение до 3000 символов» и, если вы хотите получить длину файла «(3) подсчет общего количества символов в документе». (это работает по крайней мере с текстовыми документами), вы можете использовать код ниже.
import urllib.request, urllib.parse, urllib.error
user_url = 'http://data.pr4e.org/romeo-full.txt'
fhand = urllib.request.urlopen(user_url)
result = fhand.read()
print(len(result))
Это слегка модифицированный код ForceBru.
Вы можете сделать:
fhand = urllib.request.urlopen(user_url)
result = fhand.read(3000) # read 3000 BYTES (since it's not specified what a 'character' is)
Или прочитать все, декодировать и вывести 3000 символов:
result = fhand.read().decode()[:3000] # note that whitespace is a character too