|
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
|
|||
---|---|---|---|
#18+
ГОСПОДА ЗНАТОКИ ПОДСКАЖИТЕ: есть такая необходимость сделать следующее есть поле типа varchar2(100) (oracle) где через пробел находится фамилия, имя, отчество типа: ИВАНОВ ИВАН ИВАНОВИЧ Необходимо всю эту лабуду разнести отдельно фамилия, отдельно имя и отчество по полям типа varchar2(25 или 35) это уже не принципиально, думается делать алгоритм типа: буквы до 1 пробела - фамилия, после - имя, а после 2 пробела-отчество. Однако же таблица большая там около 200 тыс. записей, боюсь типа "попасть" строку где по каким-то причинам будет не 2 а 3 пробела (кривизна рук операторов) или же отчетво или имя с приставкой типа ОГЛЫ и т.п., т.е. в строке уже не 2 а 3 пробела. Мож кто выскажет соображение как это победить. Думал над тем, шобы до 1 пробела фамилия, после - имя, а после 2 пробела - отчество - хотя это не есть истина??? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2006, 01:13 |
|
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
|
|||
---|---|---|---|
#18+
Если говорить о гражданах нашей страны, то фамилия у нас может быть либо одиночная либо двойная через дефис, соответственно алгоритм "до первого пробела" уместен. А вот с именем и отчеством есть нерешимая засада. Отчество в некоторых случаях может отсутствовать, а имя может состоять из нескольких слов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2006, 01:58 |
|
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
|
|||
---|---|---|---|
#18+
Так может и пропарсить только те записи у которых стандартный набор пробелов(читай 2) и дефисов нет, а оставшиеся вручную. 200тыс. не очень много, в ручной набор уйдет где-то сотни три, при условии что городок все-таки русский. --- aka VIR ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2006, 07:33 |
|
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
|
|||
---|---|---|---|
#18+
Когда-то решал подобную задачу на фоксе... ф.и.о. таким же образом на куски разрезал, а так же паспортные данные на три части серия, номер, а так же кем и когда выдан... могу скинуть кусок кода... Группы пробелов кстати заменял по алгоритму на один, в цикле пока есть хотя бы два стоящих рядом пробела заменял их на один... Очень красиво получилось, начальник остался доволен, хотя и говорил сперва "Забей на парсинг" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2006, 09:57 |
|
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
|
|||
---|---|---|---|
#18+
VladBoyr Само собой. У нас есть еще один веселый момент - для иностранцев, само собой, требования мягче, но тем не менее нужно проверять отсутствие смеси русских и нерусских букв. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2006, 10:31 |
|
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
|
|||
---|---|---|---|
#18+
to VladBoyr на мыло прошу кусок кода интересно глянуть osi777@nm.ru контенгент граждан там самый различный и русские и с 3 пробелами и иностранцы. буду думать... ещё такой вариант вижу: 1 проход 2 пробела; 2 проход 3 пробела и т.д. но тут надо думать куда в имя или отчество два слова пихать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2006, 17:04 |
|
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
|
|||
---|---|---|---|
#18+
osi777to VladBoyr на мыло прошу кусок кода интересно глянуть osi777@nm.ru контенгент граждан там самый различный и русские и с 3 пробелами и иностранцы. буду думать... ещё такой вариант вижу: 1 проход 2 пробела; 2 проход 3 пробела и т.д. но тут надо думать куда в имя или отчество два слова пихать. Можно предварительно подготовить таблицу - все пустоты (два и более пробелов) свести к одному пробелу (replace в SQL Server), пробелы слева-справа убрать (Ltrim, Rtrim в SQL Server). При дальнейшем парсинге принять правило, что: до первого пробела - фамилия , после последнего пробела до конца - отчество , все что между ними - имя . ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2006, 00:00 |
|
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
|
|||
---|---|---|---|
#18+
А почему бы регулярное выражение не использовать, вместо того, чтобы с реплейсами упражняться? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2006, 02:40 |
|
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
|
|||
---|---|---|---|
#18+
Если имя может быть двойное - то разбор нужно делать с конца, до 1 пробела - фамилия, до второго - отчество, после - имя, если строка состоит всего из одного пробела и двух слов, то с большой вероятностью можно говорить о том, что это ИМЯ + ФАМИЛИЯ. А защиту от неправильных действий оператора (например забыли ввести имя, отчество или фамилию) нужно предусмотреть в программном продукте... Аленочка тм ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2006, 05:56 |
|
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
|
|||
---|---|---|---|
#18+
osi777ГОСПОДА ЗНАТОКИ ПОДСКАЖИТЕ: есть такая необходимость сделать следующее есть поле типа varchar2(100) (oracle) где через пробел находится фамилия, имя, отчество типа: ИВАНОВ ИВАН ИВАНОВИЧ Необходимо всю эту лабуду разнести отдельно фамилия, отдельно имя и отчество по полям типа varchar2(25 или 35) это уже не принципиально, думается делать алгоритм типа: буквы до 1 пробела - фамилия, после - имя, а после 2 пробела-отчество. Однако же таблица большая там около 200 тыс. записей, боюсь типа "попасть" строку где по каким-то причинам будет не 2 а 3 пробела (кривизна рук операторов) или же отчетво или имя с приставкой типа ОГЛЫ и т.п., т.е. в строке уже не 2 а 3 пробела. Мож кто выскажет соображение как это победить. Думал над тем, шобы до 1 пробела фамилия, после - имя, а после 2 пробела - отчество - хотя это не есть истина??? присылай таблу - разнесем mx@enters.eu ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2006, 09:07 |
|
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
|
|||
---|---|---|---|
#18+
Кроме лексического разбора можно подключить орфографию. Т.е. создать словари фамилий, имён и отчеств. Или даже просто имён, потому как имя стоит между фамилией и отчеством. В этот же словарь можно добавить исключения из правил, разные составные имена или вообще ФИО требующие специальной обработки с признаками. После выделения имени ищем его в словаре, если нашли, то это имя, если нет, разбираемся вручную, добавляем имя в словарь и т.п.. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2006, 11:04 |
|
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
|
|||
---|---|---|---|
#18+
2 osi777 Какой алгоритм бы вы не выбрали главное: 1 Старые данные сохранить, чтобы 2 У человека была возможность их проверить, поэтому посему совеетую оформит результат в виде таблицы "было-стало", особо отметив подозрительные места. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2006, 11:26 |
|
|
start [/forum/topic.php?fid=33&fpage=59&tid=1549355]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 168ms |
0 / 0 |