Как импортировать внешний текстовый файл с веб-сайта и использовать список из него - PullRequest
1 голос
/ 20 марта 2019

У меня возникают проблемы при попытке сделать эту работу

import requests
import random
response = requests.get("https://cdn.discordapp.com/attachments/480168592164257792/557872162661335040/aaaaa.txt")
data = response.text
for line in data:
    print(line)

Я пытаюсь извлечь txt-файл из Интернета и использовать список внутри текстового файла.

Сейчас все, что нужно сделать, это предположить, что каждая буква - это отдельная строка (?)

Ответы [ 2 ]

1 голос
/ 20 марта 2019

response.text представляется символами, если вы зацикливаете их, вы получаете каждую строку.(Читайте о том, как Python обрабатывает строки).В этом случае Python не знает, что такое «строка».Поэтому разделите данные с помощью новой строки и повторите попытку:

import requests
import random
  response = requests.get("https://cdn.discordapp.com/attachments/480168592164257792/557872162661335040/aaaaa.txt")
data = response.text
for line in data.split("\n"):
  print(line)
0 голосов
/ 20 марта 2019

Атрибут response.text является строкой, поэтому итерация по нему даст вам отдельные символы. Вы можете разбить строку на пробелы (или, может быть, на новую строку), чтобы получить то, что вам нужно (я также добавил несколько операторов печати, чтобы показать шаги):

import requests
response = requests.get(
    "https://cdn.discordapp.com/attachments/480168592164257792/557872162661335040/aaaaa.txt")
print('response.text type:', type(response.text))
print('response.text len:', len(response.text))
print(response.text)

print()
print('splitting by spaces:')
for i, s in enumerate(response.text.split()):
    print(i, s)

print()
print('splitting by newlines:')
for i, line in enumerate(response.text.split('\n')):
    print(i, line)

Код дает этот вывод:

response.text type: <class 'str'>
response.text len: 21
a = ["please","work"]

splitting by spaces:
0 a
1 =
2 ["please","work"]

splitting by newlines:
0 a = ["please","work"]

@ bruno предложил в комментарии использовать str.splitlines(); это будет работать, даже если ответ будет байтовым, поскольку также существует метод bytes.splitlines().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...