- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
begin
# Это пиздец
artist_title = row.title.split(/ - /)
if artist_title.length > 1
row.artist = artist_title[0]
row.title = artist_title[1]
else
artist_title = row.title.split(/ — /)
if artist_title.length > 1
row.artist = artist_title[0]
row.title = artist_title[1]
else
artist_title = row.title.split(/ - /)
if artist_title.length > 1
row.artist = artist_title[0]
row.title = artist_title[1]
else
artist_title = row.title.split(/ – /)
if artist_title.length > 1
row.artist = artist_title[0]
row.title = artist_title[1]
else
artist = row.title.match(/\((.*?)\)/)
artist = artist.captures[0]
# puts artist_title
# puts row.title
# puts artist
row.artist = artist
row.title = row.title.gsub('('+artist+')', '').strip
end
end
end
end
rescue
next
end
Что поступает на вход в 8-й строке и чем оно отличается от 3-й строки?
Причём не факт, что именно по списку символов. Тут, как оказалось, не только тире, но и пробелы могут быть разными. Как бы не пришлось тут городить что-то сложное...
"... С блудниками да не общайтесь"
Боюсь, что на 3_14дара этот запрет не распространяется, ибо считает он, что никогда мы не будем братьями.
Да, я немного опоздал)
Блин, ну лучше бы скрытым постам въебали по 28 плюсов, чем тратить ботов на разжигание сёминой жопы...
при тесте доки, долго возмущалисть что "bash ––version" не работает почему то.
Но в любом случае цикл не нужен, раз уж мы используем регулярки. Все варианты тире можно проверить одним выражением.
Я глубого этой темой на редактировании ебуков проникся: удаляешь тире по всей книге, редактор говорит что удалил тыщи раз, открываешь книгу - а она все еще полна тире. Как выяснилось, в юникоде есть пачка тире/дефисов/прочее, и когда чистишь книгу это может обернуться серьёзным гемороем. Вот тогда то я и научился распозновать эти юникодные какашки.
Большинство из символов выглядят почти одинаково, но есть один из них - тире, строка #18 сверху - который длинее все остальных, и он "касается" краев баундинг бокса символа. Его легко распознать если этот символ выделить: становится видно что он касается краев.
Выхлоп для строк с тире следующий: Первый регекс отличается от третьего использованием , у второго и четвёртого кодпоинты отличаются на единицу.
но в юникоде их есть еще больше:
http://www.fileformat.info/info/unicode/category/Pd/list.htm
в юникоде подобных есть тоже пачка - http://www.fileformat.info/info/unicode/category/Zs/list.htm - но к счастью я только на 0xA0 натыкался.
Почему-то у вебмакак соблюсти баланс escape/unescape не получается.
Юникод непоследователен. Его создатели так и не определились, что соответствует коду: семантическое значение символа или его графический вид. Так появилось несколько символов, которые графически идентичны, но имеют разную семантику, и несколько символов, у которых назначение одинаковое, но несколько графических форм.
Но данный ГК даже не об этом. С создателем списка произведений, как я понял, нет обратной связи, поэтому договориться о формате, который бы однозначно парсился, невозможно. Приходится глотать кашу из разных разделителей.
гемор с кодировками - это долгосрочно, постоянно и без остановки.
в любом случае, это можно было в цикле сделать, по всем вариациям сделать, а не 100500 if else писать.
да даже если и так, если там встретится еще один дефис, то можно неплохо так говном наестся
Андерс Т. — Болен Д. — Ты — моё сердце, ты — моя душа.
хотя, может я фантазирую, и в яндекс-музыку все заносится руками, но если бы была вероятность профакапиться в том, как алгоритм ее распарсит, я бы посадил людей, которые будут либо аппрувить это, либо руками вносить правки