2014-12-20 3 views
1

Я очищал данные с сайта.Отфильтровать строку для действительного имени столбца MySQL

У меня есть этот список Царапины

[' ', '*One child under 12 years old stays free using existing bedding.', '24 hour front desk', 'Bar/Lounge', 'Business centre', 'Concierge', 'Dry cleaning/laundry service', ... 

Это Царапины до сих пор и больше (около 20), будет Царапины тоже.

Я хочу создать столбец в таблице для каждой записи в списке, получив первые 20 символов.

Вот как я фильтрую эти записи, чтобы создать допустимое имя столбца MySQL.

column_name = column_to_create[:20].replace(" ","_").replace("/","_").replace("*","_").replace("-","_").replace("$","_").replace("&","_").replace(".","_") 

Я знаю, что он не содержит многих недопустимых символов.

Как фильтровать, чтобы получить допустимое имя столбца? Любое решение с меньшим кодом или любой Reg-Ex ???

+0

Вы можете просто указать имя столбца в обратные ссылки. Тогда MySQL примет его. –

+0

Нет, я не хочу '/' '' '') 'и других символов в имени столбца ... не разрешено, хотя –

ответ

0

Используйте этот Regex:

column_name = re.sub(r'[-/*$&.\s]+','_',column_to_create[:20]) 

Демо:

>>> import re 
>>> st = "replace/ these**characters---all$$of&them....with_" 
>>> re.sub(r'[-/*$&.\s]+','_',st) 
'replace_these_characters_all_of_them_with_' 

Кроме того, если есть любой другой символ, который вы хотите заменить _, просто добавьте этот символ квадратные скобки в Regex. Скажем, например, вам также нужно заменить #. Тогда regex станет re.sub(r'[-/*$&.\s#]+','_',column_to_create[:20]).

+0

Это не удаляет пробелы между символами –

+0

О, извините, я забыл добавить символ пробела' \ s 'в замене символов. Я загрузил его сейчас, повторите попытку. –

+0

Прежде чем вы обновили, я попытался дать пустое пространство '' в regex ... и он также работал ... :) Это хороший подход ??? И я хочу также удалить новые строки или что-нибудь, что делает в действительном имени столбца MySQL, должно быть удалено из моего astring –

0

Python имеет возможность перевода, которую вы можете использовать, чтобы легко изменить один символ на другой или удалить символы. Я использую его что-то вроде этого (первые 3 строки настроены, 4-я строка фактически использует его.)

norm = string.maketrans(' _,','---') # space underscore comma to dash 
    keep = "[email protected]'$%{}[]~#().&^+=/\/:" 
    toss = string.translate(norm,norm,string.letters+string.digits+keep) 

    toName = toName.translate(norm,toss) 
+0

M a noob to Python ... не знаю, что написал u: P –