LINUX.ORG.RU

sort и буква ё

 


0

1

Доброго времени суток.
Есть файл с русскими словами (с присутствием буквы ё).

костёр
мама
абрикос
ёжик
коричневый
пламя
ездить
кость

Надо отсортировать слова в алфавитном порядке. В данном случае sort делает следующее:
абрикос
ездить
коричневый
кость
костёр
мама
пламя
ёжик

Хотя слово «кость» должно быть после слова «костёр», а слово «ёжик» должно быть перед словом «коричневый».

Чем можно отсортировать в правильном порядке русского алфавита?

Ответ на: комментарий от Goury

Я не разницу искал, а общее. У обеих проблемы с носом, возможно коронавирус?

И ещё какие-то пятна по телу…

Shushundr ★★★
()
Последнее исправление: Shushundr (всего исправлений: 1)

не знаю, кто там как сортирует, но по крайней мере Python по алфавиту:

>>> l = ["ёж", "ёжик", "ежу", "ёжику", "ель", "елей", "ежи", "ел"]
>>> sorted(l)
['ежи', 'ежу', 'ел', 'елей', 'ель', 'ёж', 'ёжик', 'ёжику']
VenturiTube
()
Ответ на: комментарий от VenturiTube

RTFM, питон из коробки в юникод не умеет и никогда не умел.

>>> import icu   # https://pypi.org/project/PyICU/
>>> l = ["ёж", "ёжик", "ежу", "ёжику", "ель", "елей", "ежи", "ел"]
>>> sorted(l, key=icu.Collator.createInstance(icu.Locale('ru_RU.UTF-8')).getSortKey)
['ёж', 'ежи', 'ёжик', 'ёжику', 'ежу', 'ел', 'елей', 'ель']
>>> sorted(l, key=icu.Collator.createInstance(icu.Locale('ky_KY.UTF-8')).getSortKey)
['ежи', 'ежу', 'ел', 'елей', 'ель', 'ёж', 'ёжик', 'ёжику']
x3al ★★★★★
()
Последнее исправление: x3al (всего исправлений: 2)
Ответ на: комментарий от VenturiTube

Не по алфавиту. Вероятно по code points:

In [1]: l = ["ёж", "ёжик", "ежу", "ёжику", "ель", "елей", "ежи", "ел", "уж", "ужик"]

In [2]: sorted(l)
Out[2]: ['ежи', 'ежу', 'ел', 'елей', 'ель', 'уж', 'ужик', 'ёж', 'ёжик', 'ёжику']
TeopeTuK ★★★★★
()
// В JS этот косяк тоже есть

let words = [
    'костёр',
    'мама',
    'абрикос',
    'ёжик',
    'коричневый',
    'пламя',
    'ездить',
    'кость'
];

let sortedWords = words.sort();
console.log(sortedWords); // Array(8) [ "абрикос", "ездить", "коричневый", "кость", "костёр", "мама", "пламя", "ёжик" ]

sortedWords = words.sort((a, b) => a.localeCompare(b));
console.log(sortedWords) // Array(8) [ "абрикос", "ёжик", "ездить", "коричневый", "костёр", "кость", "мама", "пламя" ]
damix9 ★★★
()
Ответ на: комментарий от Shushundr

Конечно баг. Хочешь менять буквы – меняй. Хочешь сортировать – сортируй. Нет проблемы в том, чтобы скормить файл sed-у, а потом, через пайп, sort-у.

Баговейший баг. Нарушение принципов Unix. Software that’s suck. И так далее.

thegoldone
()
Ответ на: комментарий от Goury

И этот топик — тому подтверждение, равно как и тому что думать головой и искать правду в кучах мусора из интернета люди разучились.

Они и не умели. Просто мусора стало на порядок больше. И он стал изощрённее мимикрировать под истину (например, Википедия).

thegoldone
()
Ответ на: комментарий от AKonia

В этом нет проблемы. Кодировка к порядку в алфавите и отношения иметь не должна.

thegoldone
()
Ответ на: комментарий от no-such-file

Тут дело даже не в уговорах. Я уже тут говорил, что е/ё переходят друг в друга в разных формах одного и того же слова, или разных словах одного корня. Обычно желательно чтобы они тем не менее были вместе, а не в разных частях каталога.

Переходов много в языке и для букв и для большего. Ничего это не значит.

Рост, растение. О и а переходят друг в друга.

thegoldone
()
Ответ на: комментарий от thegoldone

Переходов много в языке и для букв и для большего

Ещё раз для тех, кто в бронепоезде. Для е/ё так принято, а для раст/рос нет. Тут нет никакого универсального правила. Но вот скажи, ты и правда такой тупой до языка, что не видишь разницы между «рост-растение-ростовщик» и «ёж-ежи-ежовый»?

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Для е/ё так принято, а для раст/рос нет.

Около Вашего пдоъезда?

Тут нет никакого универсального правила.

И не универсального тоже нет.

не видишь разницы между «рост-растение-ростовщик» и «ёж-ежи-ежовый»?

Разные слова, разные формы, разные буквы.

thegoldone
()
Ответ на: комментарий от thegoldone

Около Вашего пдоъезда?

Везде. Тут уже показывали, что в ICU также.

Разные слова, разные формы, разные буквы

Ну ок.

no-such-file ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.