У меня есть таблица в Lua следующим образом:Строка чтения из CSV-файла может не индексировать мой стол в Lua
tab = { y = 1, n = 2}
print(tab)
{
y : 1
n : 2
}
Я пытаюсь индексировать его со строкой, которую я прочитал из файла CSV. Следующие работы по их назначению:
print(tab['y'])
1
Однако, это не работает, как ожидалось:
local file = io.open(label_file, "r")
for line in file:lines() do
local col = string.split(line, ",")
print(type(col[2])) -> string
print(col[2]) -> y
print(tab[ (col[2]) ]) -> nil
end
Я пытался принуждать седловины [2] в строку, но все равно не индексирует мой стол, как предполагалось ,
Извините за сумбур, я написал функцию String.split но пренебрегли включить его выше в примере кода.
Я разрешил ошибку. Ранее я написал файл CSV с использованием Matlab, и ячейки были отформатированы неправильно как «числа». При изменении форматирования на «текст» код работает по назначению. Очень странно, ошибка, на мой взгляд, что приводит к такого рода вещи:
print(type(col[2])) -> string
print(col[2]) -> y
print(col[2] == 'y') -> false
Нет строки string.split() в формате lua 5.1 или 5.2, и вы не показывали строки csv, возможно, они разделены чем-то другим, а не запятыми. – Vlad
Не знаете, как это не произошло ... – EinsteinK
попробуйте сделать 'print (string.byte ('y'))' и 'print (string.byte (col [2], 1, #col [2])) ' – moteus