Разделение имени человека в имя и фамилию

Как насчет создания одного оператора select для запуска, который получает все записи одновременно.

На основе вашего изображения, что-то вроде этого:

select
 (Select [Field1] from [GenDet$I3:I3]) as Field1
,(Select [Field2] from [GenDet$I4:I4]) as Field2
...

Это был горизонтальный и столбец.

или вы можете пойти вертикально с

 (Select [FieldName],[Field1] as Value from [GenDet$I3:I3]) as Field1
union all
 (Select [Field2],* from [GenDet$I4:I4]) as Field2
...

Я знаю, что их около 3000 или около того, но вы можете построить это с помощью запроса конкатенации строк довольно просто.

Просто мысль.

Это уменьшит время выполнения, так как электронная таблица не открывается и не закрывается на каждой итерации.

22
задан S.Lott 3 November 2008 в 20:11
поделиться

12 ответов

Я определил бы стандартный формат (некоторые формы используют их), такой как, "Напишите свое имя в Имя, Фамилия форма".

Это облегчает для Вас, поскольку имена обычно не содержат запятую. Это также проверяет, что Ваши пользователи на самом деле вводят и имя и фамилию.

0
ответ дан 29 November 2019 в 03:19
поделиться

Вот то, как сделать это в SQL. Но нормализация данных с такого рода вещью является действительно переносом. Я соглашаюсь с Dave DuPlantis о выяснении отдельных исходных данных.

0
ответ дан 29 November 2019 в 03:19
поделиться

Вы, вероятно, хотели бы использовать rsplit для этого:

rsplit ([сентябрь [maxsplit]])

Возврат список слов в строке, с помощью сентября в качестве строки разделителя. Если maxsplit дан в большей части maxsplit, разделения сделаны, самые правые. Если сентябрь не определяется, или Ни один, любая пробельная строка является разделителем. За исключением разделения справа, rsplit () ведет себя как разделение (), который описан подробно ниже. Новый в версии 2.4.

0
ответ дан 29 November 2019 в 03:19
поделиться

С тех пор существуют так многие различное изменение того, как люди написали свои имена, но вот то, как основной способ получить first/lastname через regex.

import re
p = re.compile(r'^(\s+)?(Mr(\.)?|Mrs(\.)?)?(?P<FIRST_NAME>.+)(\s+)(?P<LAST_NAME>.+), re.IGNORECASE)
m = p.match('Mr. Dingo Bat')
if(m != None):
  first_name = m.group('FIRST_NAME')
  last_name = m.group('LAST_NAME')
2
ответ дан 29 November 2019 в 03:19
поделиться

Разделение имен более трудно, чем это смотрит. Некоторые имена имеют две фамилии слова; некоторые люди введут первую, среднюю, и фамилию; некоторые имена имеют два имени работы. Более надежное (или наименее ненадежный) способ обработать имена должно всегда получать имя и фамилию в отдельных полях. Конечно, это поднимает его собственные вопросы, как то, как обработать людей только с одним именем, удостоверившись, что оно работает на пользователей, которые имеют различное упорядочивание заглавных ролей.

Имена тверды, обращаться с осторожностью.

2
ответ дан 29 November 2019 в 03:19
поделиться

Простой способ сделать точно, что Вы спросили в Python,

name = "Thomas Winter"
LastName = name.split()[1]

(отметьте круглые скобки на разделении вызова функции.)

разделение () создает список, где каждый элемент от Вашей исходной строки, разграниченной пробелом. Можно теперь захватить второй элемент с помощью name.split () [1] или последний элемент с помощью name.split () [-1]

Однако, как другие сказали, если Вы не УВЕРЕНЫ, что просто получаете строку как "First_Name Last_Name", существует намного больше включенных проблем.

5
ответ дан 29 November 2019 в 03:19
поделиться

Золотое правило данных - не агрегируется слишком рано - намного легче склеить поля, чем разделяют их. У большинства людей также есть второе имя, которое должно быть дополнительным полем. У некоторых людей есть множество вторых имен. Некоторые люди только имеют одно имя , одно слово. Некоторые культуры обычно имеют словарь вторых имен, воздавая должное родословной назад к приземлению Ковчега Golgafrincham.

Вам не нужно решение для кода здесь - Вам нужно бизнес-правило.

6
ответ дан 29 November 2019 в 03:19
поделиться

Проблема с попыткой разделить имена от единственного входа состоит в том, что Вы не получите полную фамилию для людей с пробелами в их фамилии, и я не полагаю, что Вы будете в состоянии записать код для управления этим полностью.

я рекомендовал бы попросить имена отдельно, если это вообще возможно.

14
ответ дан 29 November 2019 в 03:19
поделиться

Как это:

print name.split()[-1]
3
ответ дан 29 November 2019 в 03:19
поделиться

Вы найдете, что Вашей ключевой проблемой с этим подходом не является техническая, а человеческая - различные люди написали свои имена по-разному.

На самом деле, терминология "имени" и "фамилии" самостоятельно испорчена.

, В то время как многие смешанные семьи используют написанную через дефис фамилию, такую как Смит-Джонс, существуют некоторые, кто просто использует оба имени отдельно, "Smith Jones", где оба имени являются фамилией.

Много европейских фамилий имеют несколько частей, таких как "de Vere" и "van den Neiulaar". Иногда эти отдельно оплачиваемые предметы имеют важную историю семьи - например, префикс, награжденный королем сотни лет назад.

Второстепенный вопрос: я использовал для своей выгоды их правильно для людей, на которых я ссылаюсь - "de", и "van den" не получают буквы captial для некоторых семей, но делают для других.

С другой стороны, много азиатских культур помещают фамилию сначала, потому что семью считают более важной, чем человек.

Последняя точка - некоторые люди помещают большое хранилище в то, чтобы быть "Младшим" или "Старшим" или "III" - и Ваш код не должен рассматривать тех как фамилию.

Также замечание, что существует достаточное количество людей, которые используют имя, которое не является тем, даруемым их родителями, я использовал следующую схему с некоторым успехом:

Полное имя (как обычно записано для обращения к почте); Фамилия; Известный Как (имя, наиболее часто используемое в разговоре).

, например:

Полное имя: William Gates III; Фамилия: Gates; Известный Как: Счет

Полное имя: Soong Li; Фамилия: Soong; Известный Как: Lisa

63
ответ дан 29 November 2019 в 03:19
поделиться

Если вы пытаетесь разобрать человеческое имя в PHP, я рекомендую сценарий Кейта Бекмана nameparse.php .

4
ответ дан 29 November 2019 в 03:19
поделиться

Это довольно старая проблема, но я нашел ее в поисках решения для разбора частей из общего имени.

http://code.google.com/p/python-nameparser/

10
ответ дан 29 November 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: