Python: что такое строковый массив?

Итак, я выполняю эту задачу кодирования на Python, и проблема говорит, что вход - это string array. Я загрузил образец ввода, и файл .txt выглядит следующим образом:

13
Alice;START
Bob;START
Bob;1
Carson;START
Alice;15
Carson;6
David;START
David;24
Evil;START
Evil;24
Evil;START
Evil;18
Fiona;START

Честно говоря, я не знаю, как обработать этот ввод, чтобы получить из него отдельные строки как пары элементов, поэтому я плохо справился с задачей. Однако мне все еще интересно учиться.

Я пробовал обрабатывать ввод с помощью split(";").

Есть идеи, как разобрать этот ввод?

«массивы» на самом деле не используются в Python (я имею в виду, что они есть, но вы их не используете, потому что списки намного лучше). Какой должен был быть результат?

Adam Smith 03.09.2018 21:59

Вывод должен быть 11;Evil;SHORTENED_JOB, потому что Evil запустил задание с идентификатором меньше, чем у предыдущего запущенного задания (идентификаторы инкрементные), где 11 - номер строки.

user9518022 03.09.2018 22:03

Входными данными является файл, содержащий текст; считывать содержимое файла в соответствующие внутренние структуры данных. Использование «строкового массива» в любых инструкциях, хотя и прискорбно, не подразумевает реализации и было бы лучше передано как «n строк, как указано в первой строке, где каждая строка представляет собой пары разделенных точкой с запятой… и т. д. etc »- решения будут использовать соответствующие структуры данных для языка специфический.

user2864740 03.09.2018 22:03
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
4 471
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Подробностей недостаточно, но я предполагаю, что первая строка - это количество примеров, а следующие строки содержат кортежи, которые, по сути, являются указанным вами строковым массивом.

Я бы пошел по следующему пути:

with open ("input.txt") as f:
   no_examples = f.readline().strip()
   array = []
   for i in range(no_examples):
      example = f.readline().strip().split(';')
      array.append(example)

Присваивание переменной example удаляет невидимые символы конца строки и разделяет результат разделителем ;.

Ответ принят как подходящий
with open("your_file.txt") as f:
    array = [line.rstrip().split(";") for line in f]

Объяснение:

Первая строка - это безопасный способ открыть текстовый файл. (После работы файл автоматически закроется).

f в конце этой строки становится именем объекта повторяемый - с каждой итерацией мы получаем полная следующая строка из открытого текстового файла.

Теперь мы используем этот объект для создания списка с помощью понимания списка (вторая строка) - см. Конец этой строки:

                                      for line in f]

Поскольку line содержит полную строку, т.е. е. с завершающим символом новой строки (\n) мы используем метод rstrip(), чтобы обрезать его:

            [line.rstrip()            for line in f]

И, наконец, мы разбиваем каждую такую ​​строку на список (используя символ-разделитель ;)

            [line.rstrip().split(";") for line in f]

и присваиваем результат переменной array:

    array = [line.rstrip().split(";") for line in f]

Тест:

from pprint import pprint
pprint(array)

Выход:

[['13'],
 ['Alice', 'START'],
 ['Bob', 'START'],
 ['Bob', '1'],
 ['Carson', 'START'],
 ['Alice', '15'],
 ['Carson', '6'],
 ['David', 'START'],
 ['David', '24'],
 ['Evil', 'START'],
 ['Evil', '24'],
 ['Evil', 'START'],
 ['Evil', '18'],
 ['Fiona', 'START']]

Примечание:

Первая строка вашего текстового файла содержит число 13 - вероятно, это количество оставшихся строк. Если вы хотите проигнорировать это, просто добавьте [1:] во вторую строку кода:

with open("your_file.txt") as f:
    array = [line.rstrip().split(";") for line in f][1:]

Другие вопросы по теме