Создание массива из строк, состоящих из нескольких переменных

#python #arrays

#python #массивы

Вопрос:

Прямо сейчас у меня есть это.

 print (name.text.strip(), genre.text.strip(), bouquets.text.strip(), encryption.text.strip(), sid.text.strip(), nid.text.strip(), tid.text.strip(), sep = 't')
  

Это дает желаемый результат. Как я могу добавить эту строку в массив вместо ее печати?

Я пытался

 channel = (name.text.strip(), genre.text.strip(), bouquets.text.strip(), encryption.text.strip(), sid.text.strip(), nid.text.strip(), tid.text.strip(), sep = 't')
channels.append (channel)
  

Но это не работает.

 channel = (name.text.strip(), genre.text.strip(), bouquets.text.strip(), encryption.text.strip(), sid.text.strip(), nid.text.strip(), tid.text.strip(), sep = 't')
                                                                                                                                                            ^
  

Ошибка синтаксиса: недопустимый синтаксис

Я думаю, это из-за разделения табуляции, может быть?

Кто-нибудь знает, как это сделать правильно?

Комментарии:

1. в Python есть списки, а не массивы. и список определяется как channel = [] не channel = ()

2. Что вы подразумеваете под «Но это не работает».? Что происходит с вашим вторым фрагментом кода и что вы хотите, чтобы он делал по-другому?

3. Вы поняли, что sep является аргументом print ?

4. str.join([name.text.strip(), genre.text.strip(), bouquets.text.strip(), encryption.text.strip(), sid.text.strip(), nid.text.strip(), tid.text.strip()])

5. Удалите sep = 't' из вашего последнего элемента и используйте квадратные скобки: [name.text.strip(), ...]

Ответ №1:

Сначала вам нужно создать str , а затем его можно добавить в ваш массив.

 channel = "t".join([
    name.text.strip(),
    genre.text.strip(),
    bouquets.text.strip(),
    encryption.text.strip(),
    sid.text.strip(),
    nid.text.strip(),
    tid.text.strip()
])
channels.append(channel)
  

Поскольку вы применяете text.strip() к каждому элементу, вы можете упростить это, используя представление списка:

 elements = [name, genre, bouquets, encryption, sid, nid, tid]
channel = "t".join(
    x.text.strip() for x in elements
)
channels.append(channel)
  

Ответ №2:

Если «правильно» также означает уменьшение дублирования кода, вы можете использовать:

 channel = (name, genre, bouquets, encryption, sid, nid, tid)
channel = "t".join(item.text.strip() for item in channel)
channels.append(channel)