为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式不识别用于从以“#”开头的单词中删除“#”的“#”

正则表达式不识别用于从以“#”开头的单词中删除“#”的“#”

慕虎7371278 2021-10-26 16:45:18
#如果它是单词中的第一个字符,如何从字符串中的单词中删除。如果它单独出现、出现在词的中间或词尾,它应该保留。目前我正在使用正则表达式:test = "# #DataScience"test = re.sub(r'\b#\w\w*\b', '', test) 用于#从以开头的单词中删除,#但它根本不起作用。它按原样返回字符串谁能告诉我为什么#没有被识别和删除?例子 -test - "# #DataScience"Expected Output - "# DataScience"Test - "kjndjk#jnjkd"Expected Output - "kjndjk#jnjkd"Test - "# #DataScience #KJSBDKJ kjndjk#jnjkd #jkzcjkh# iusadhuish#""Expected Output -"# DataScience KJSBDKJ kjndjk#jnjkd jkzcjkh# iusadhuish#"
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

您可以按空格拆分字符串以' '列出字符串中的所有单词。然后在该列表中循环,检查给定条件的每个单词,并在必要时替换哈希。之后,您可以按空格加入列表' '以创建一个字符串并返回它。


def remove_hash(str):

    words = str.split(' ')  # Split the string into a list

    without_hash = []  # Create a list for saving the words after removing hash

    for word in words:

        if re.match('^#[a-zA-Z]+', word) is not None:  # check if the word starts with hash('#') and contains some characters after it.

            without_hash.append(word[1:])  # it true remove the hash and append it your the ther list

        else:

            without_hash.append(word)  # otherwise append the word as is in new list

    return ' '.join(without_hash)  # join the new list(without hash) by space and return it.

输出:


>>> remove_hash('# #DataScience')

'# DataScience'

>>> remove_hash('kjndjk#jnjkd')

'kjndjk#jnjkd'

>>> remove_hash("# #DataScience #KJSBDKJ kjndjk#jnjkd #jkzcjkh# iusadhuish#")

'# DataScience KJSBDKJ kjndjk#jnjkd jkzcjkh# iusadhuish#'

您可以通过避免这样的 if else 来缩短代码(但有点难以理解):


def remove_hash(str):

words = str.split(' ' )

    without_hash = []

    for word in words:

        without_hash.append(re.sub(r'^#+(.+)', r'\1', word))

    return ' '.join(without_hash)

这会给你同样的结果


查看完整回答
反对 回复 2021-10-26
?
呼如林

TA贡献1798条经验 获得超3个赞

a = '# #DataScience'

b = 'kjndjk#jnjkd'

c = "# #DataScience #KJSBDKJ kjndjk#jnjkd #jkzcjkh# iusadhuish#"

regex = '(\s+)#(\S)'


import re

print re.sub(regex, '\\1\\2', a)

print re.sub(regex, '\\1\\2', b)

print re.sub(regex, '\\1\\2', c)


查看完整回答
反对 回复 2021-10-26
  • 3 回答
  • 0 关注
  • 228 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信