从电子邮件字符串中删除特殊符号
Posted
技术标签:
【中文标题】从电子邮件字符串中删除特殊符号【英文标题】:Remove special symbols from email string 【发布时间】:2021-08-05 09:16:12 【问题描述】:我需要替换电子邮件字符串中的一些字符,正是这样的操作:
lower_email = str.lower(str.split(email,'@')[0])
nopunc_email = re.sub('[!@#$%^&*()-=+.,]', ' ', lower_email)
nonum_email = re.sub(r'[0-9]+', '', nopunc_email).strip()
但在 SQL 中
我尝试使用表达式TRANSLATE(lower(email), 'a1_a.a-a@1-+()a ', 'a a a a')
,但它没有给我解决方案。
提前致谢!
例如:
import re
email = 'some_email.example-2021@gmail.com'
lower_email = str.lower(str.split(email,'@')[0])
nopunc_email = re.sub('[!@_#$%^&*()-=+.,]', ' ', lower_email)
nonum_email = re.sub(r'[0-9]+', '', nopunc_email).strip()
result 'some email example'
【问题讨论】:
Привет!你能不能至少给我们一个期望的结果? 样本数据和预期结果会有很大帮助,但replace(translate(email,'!#$%^&*()=+','?'),'?')
怎么样?
在描述中提供了所需的结果)
【参考方案1】:
SELECT email,
TRIM(
TRANSLATE(
LOWER(SUBSTR(email, 1, INSTR(email, '@') - 1)),
'!_#$%^&*()-=+.,0123456789',
' '
)
) AS translated
FROM table_name
其中,对于样本数据:
CREATE TABLE table_name (email) AS
SELECT 'some_email.example-2021@gmail.com' FROM DUAL;
输出:
TRANSLATED some_email.example-2021@gmail.com some email example
db小提琴here
【讨论】:
非常感谢!附加问题,我如何按字符“拆分”字符串以获取其标记(在 pl/sql 中)?像 python str.split(email,'@') @ЛюбовьПономарева 在答案中使用SUBSTR
和INSTR
。 SUBSTR(email, 1, INSTR(email, '@') - 1)
获取@
之前的子字符串,SUBSTR(email, INSTR(email, '@') + 1)
获取@
之后的子字符串。
但是当我有多个@?
@ЛюбовьПономарева 使用INSTR
查找@
s 的位置并获取它们之间的子字符串。以上是关于从电子邮件字符串中删除特殊符号的主要内容,如果未能解决你的问题,请参考以下文章