Я пытаюсь объединить строку для отправки сообщения через python> telegram Мой план состоит в том, чтобы функция была модульной. Сначала он импортирует строки из файла .txt и на основе этого количества строк создает два разных массива. array1[] и array2[], array1 получит значения списка в виде строк, а array2 получит сгенерированную пользователем информацию, чтобы дополнить то, что хранится в той же позиции, что и способ определения различий в array1[pos], как поставить таким образом:
while (k<len(list)):
array2[k]= str(input(array1[k]+": "))
k+=1
Я хотел создать одну строку для отправки в одном сообщении, например, таким образом, чтобы весь мой список находился внутри одной строки.
string1 = array1[pos]+": "+array2[pos]+"\n"
Я пытался использовать while для сравнения len, но я снова и снова вспоминал и переписывал свою собственную строку.
Я постараюсь сделать это кратко.
Итак, сначала я импортирую несколько строк, содержащихся в файле TXT. Из каждой отдельной строки я создаю «массив» с атрибутами и пустой массив с соответствующими позициями, поэтому «ArrayWithoutAnything[0]» нужно будет объединить с «ArrayWithSomething[0]» и так далее. Однако, поскольку мне нужно отправить конкатенированную строку через сообщение Telegram, мне нужно будет создать формулу, чтобы каждая позиция внутри массива объединялась соответствующим образом независимо, если у меня есть [n] позиций.
Спасибо, Ник. Я опубликую что-нибудь, дайте мне знать, если это поможет.
list_of_strings_from_txt = ["A","B","C"]
modified_list = [f"{w}: {input(f'{w}:')}" for w in list_of_strings_from_txt]
Наверное? может быть?
Похоже, что вы ищете один список, который поступает непосредственно из вашего текстового файла. Есть много способов сделать это, но вы, скорее всего, не захотите итеративно создавать список с позицией индекса. Я бы сказал, просто добавляйте элементы в свой список.
Принятый ответ на этот сообщение имеет хорошую ссылку, которая в основном заключается в следующем:
import csv
with open('filename.csv', 'r') as fd:
reader = csv.reader(fd)
for row in reader:
# do something
Что в вашем случае будет означать что-то вроде этого:
import csv
actual_text_list = []
with open('filename.csv', 'r') as fd:
reader = csv.reader(fd)
for row in reader:
actual_text_list.append(row)
user_input_list = []
for actual_text in actual_text_list:
the_users_input = input(f'What is your response to {actual_text}? ')
user_input_list.append(the_users_input)
Это создает два списка, один с фактическим текстом, а другой с вводом другого. Я думаю, это то, что вы пытаетесь сделать.
Другой способ, если список в вашем текстовом файле не будет иметь дубликатов, вы можете рассмотреть возможность использования dict
, который является просто словарем, хранилищем данных ключ-значение. Вы бы сделали key
actual_text
из файла, а value
user_input
. Еще одна техника, вы можете сделать list
из lists
.
import csv
actual_text_list = []
with open('filename.csv', 'r') as fd:
reader = csv.reader(fd)
for row in reader:
actual_text_list.append(row)
dictionary = dict()
for actual_text in actual_text_list:
the_users_input = input(f'What is your response to {actual_text}? ')
dictionary[actual_text] = the_users_input
Затем вы можете использовать эти данные следующим образом:
for actual_text, user_input in dictionary.items():
print(f'In response to {actual_text}, you specified {user_input}.')
Думаю, я попробую использовать csv. Как вы упомянули в последний раз, дубликатов нет. Это всегда будут буквы + цифры, чтобы назначить несколько транспортных средств с их «позывным», чтобы говорить. Итак, у меня есть UR 11199 и UR 11198, я могу использовать пробелы внутри dict? Может быть нет.
Но в первой части я думаю о способах реализации с использованием CSV, дело в том, что я не тот, кто заполняет необходимую информацию, поэтому я хотел бы быть максимально антитупым.
Этот вопрос очень трудно понять. Можете ли вы быть более конкретным в отношении того, что вы пытаетесь сделать? Где вы загружаете файл? Является ли файл списком? Как должен выглядеть ваш файл?