Поскольку ваши данные чистые, то есть они не содержат двойных кавычек или квадратных скобок, мы можем использовать метод str.translate
для перевода собственного строкового представления Python этого списка в формат Mathematica.
Чтобы использовать str.translate
, сначала нам нужно построить таблицу переводов, используя метод str.maketrans
.
data = [
[' Tulane-B (Tulane (Bacchus)) ', ' Florida Tech (Florida Tech) '],
[' Stanford-B (Stanford Prison Experiment) ', ' San Jose State (Megabyte) '],
[' Stanford-B (Stanford Prison Experiment) ', ' Duke (Brimstone) '],
[' Stanford-B (Stanford Prison Experiment) ', ' Oregon State (Beavers) '],
]
trans = str.maketrans("'[]", '"{}')
s = str(data).translate(trans)
print(s)
выход
{{" Tulane-B (Tulane (Bacchus)) ", " Florida Tech (Florida Tech) "}, {" Stanford-B (Stanford Prison Experiment) ", " San Jose State (Megabyte) "}, {" Stanford-B (Stanford Prison Experiment) ", " Duke (Brimstone) "}, {" Stanford-B (Stanford Prison Experiment) ", " Oregon State (Beavers) "}}
Это быстрее, чем при использовании Python петли с Python строки форматирования, так как почти вся работа делается с помощью кода, который написан на C, так что он работает на скорости C ,
FWIW, это также можно сделать в Python 2 с незначительными изменениями. В Python 2 нет метода str.maketrans
. Вместо этого вам необходимо использовать вспомогательную функцию string.maketrans
.
Если вы хотите, чтобы каждая строка находилась на отдельной строке, вам необходимо предварительно обработать каждую строку. Это обязательно будет немного медленнее, но разница в скорости будет едва заметна с 8000 строк.
data = [
[' Tulane-B (Tulane (Bacchus)) ', ' Florida Tech (Florida Tech) '],
[' Stanford-B (Stanford Prison Experiment) ', ' San Jose State (Megabyte) '],
[' Stanford-B (Stanford Prison Experiment) ', ' Duke (Brimstone) '],
[' Stanford-B (Stanford Prison Experiment) ', ' Oregon State (Beavers) '],
]
# Convert data to strings with each row on a separate line
s = '[\n ' + ',\n '.join([str(row) for row in data]) + '\n]'
trans = str.maketrans("'[]", '"{}')
s = s.translate(trans)
print(s)
выход
{
{" Tulane-B (Tulane (Bacchus)) ", " Florida Tech (Florida Tech) "},
{" Stanford-B (Stanford Prison Experiment) ", " San Jose State (Megabyte) "},
{" Stanford-B (Stanford Prison Experiment) ", " Duke (Brimstone) "},
{" Stanford-B (Stanford Prison Experiment) ", " Oregon State (Beavers) "}
}
Вы должны добавить свой ожидаемый результат на ваш вопрос, так как не все кодеры Python знать Mathematica. Я предполагаю, что вы хотите что-то вроде '{{" a "," b "}, {" c "," d "}}' и т. Д. Вы можете легко сделать это с форматированием строк. Поэтому вы должны сделать попытку закодировать это самостоятельно и вставить попытку кода в вопрос. –
Ваш пример - это формат, который я сделал, должен был написать это. Точка вопроса, хотя для образовательных целей, есть более простой способ сделать это. Я знаю, что могу легко форматировать строку, но чтобы сохранить будущее, мне интересно, эффективнее ли это. – tharvey
Существует несколько способов сделать это с помощью форматирования строк, поэтому немного сложно предложить более эффективный способ, чем то, что вы сейчас делаете, если мы не можем реально видеть, что вы сейчас делаете. –