Форум сайта python.su
Всем привет!
Думаю никто не удивится, если я скажу, что в проге я профан, а выполнить задание нужно, поэтому пишу сюда в надежде на помощь.
Имеется CSV файл с двумя колонками, где в каждой ячейке находится беспорядочный набор букв. И есть функция, которая считает расстояние Левенштейна:
def levenshteinDistance(s1,s2):
if len(s1) > len(s2):
s1,s2 = s2,s1
distances = range(len(s1) + 1)
for index2,char2 in enumerate(s2):
newDistances =
for index1,char1 in enumerate(s1):
if char1 == char2:
newDistances.append(distances)
else:
newDistances.append(1 + min((distances,
distances,
newDistances)))
distances = newDistances
return distances
print(levenshteinDistance(s1,s2))
Задача заключается в следующем: надо сделать так, чтобы python считывал CSV файл, и по очереди брал значение 1 ячейки и значение 2 ячейки первой строки(затем автоматически второй, третей и т.д) и подставлял соответственно их в def levenshteinDistance(s1,s2), чтобы считалось расстояние.
Заранее огромное спасибо!
P.S.надеюсь, несовсем коряво объяснил
Офлайн
правильно вставьте функцию
что делать с расстояниями? выводить на экран или записывать в файл?
OK_GOне, не удивится :) но вы хоть пытались сделать? где ваши наработки? что не получается?
Думаю никто не удивится, если я скажу, что в проге я профан
Отредактировано terabayt (Май 21, 2015 16:50:54)
Офлайн
Вывести на экран.
Дальше вот этого дело никак не идет:
import codecs
separator = “;”
file = codecs.open(“out_all.csv”)
rows =
for line in file:
line_cleared = line.rstrip()
cells = line_cleared.split(separator)
rows.append(cells)
Ны выходе получается такое:
[, , , ]
Наверно, можно это через два цикла for сделать. То есть сделать два списка, и поочередно брать каждый элемент из обоих списков и подставлять их в аргумент функции.
Но я полный ноль и не знаю , как это осуществить.
Офлайн
Вам скриншот показали, как вставлять код на форум. Что конкретно в нем неясно?
Офлайн
OK_GOЧто-то не похоже это на расстояние Левенштейна. Там либо рекурсивная функция (медленная), либо нерекурсивная через матрицу (быстрая).
И есть функция, которая считает расстояние Левенштейна:
OK_GOПохоже, не до конца понимаешь, что вообще нужно сделать.
P.S.надеюсь, несовсем коряво объяснил
Отредактировано py.user.next (Май 22, 2015 01:01:06)
Офлайн