Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式不识别'#';移除 >如何从代码中删除 >代码>,后面跟着“代码> >‘< /代码>,而不只是”/“代码>,如果它本身存在,在单词的中间,甚至在结尾。_Python_Regex_Python 3.x_Data Science - Fatal编程技术网

Python 正则表达式不识别'#';移除 >如何从代码中删除 >代码>,后面跟着“代码> >‘< /代码>,而不只是”/“代码>,如果它本身存在,在单词的中间,甚至在结尾。

Python 正则表达式不识别'#';移除 >如何从代码中删除 >代码>,后面跟着“代码> >‘< /代码>,而不只是”/“代码>,如果它本身存在,在单词的中间,甚至在结尾。,python,regex,python-3.x,data-science,Python,Regex,Python 3.x,Data Science,目前我使用的是正则表达式: test = "# #DataScience" test = re.sub(r'\b#\w\w*\b', '', test) 用于从以“#”开头的单词中删除“#”,但它根本不起作用。它按原样返回字符串 有人能告诉我为什么不能识别和删除“#”? 示例- 测试-“##数据科学” 预期输出-“#数据科学” 测试-“kjndjk#jnjkd” 预期输出-“kjndjk#jnjkd” 测试-“##数据科学#KJSBDKJ kjndjk#jnjkd#JKZJKH#iusadh

目前我使用的是正则表达式:

test = "# #DataScience"
test = re.sub(r'\b#\w\w*\b', '', test) 
用于从以
“#”开头的单词中删除“#”,但它根本不起作用。它按原样返回字符串

有人能告诉我为什么不能识别和删除
“#”
? 示例-

测试-
“##数据科学”

预期输出-
“#数据科学”

测试-
“kjndjk#jnjkd”

预期输出-“kjndjk#jnjkd”

测试-
“##数据科学#KJSBDKJ kjndjk#jnjkd#JKZJKH#iusadhuish#”


预期输出-
“#数据科学KJSBDKJ kjndjk#jnjkd JKZJKH#iusadhuish#”
您的模式的问题是
不是单词字符,因此
\b
无法使用它。您可以改为使用查找:

test = "#HereToHelp STUFF #DataScience"
print(test)
test = re.sub(r'(?:(?<= )|^)#\w+\b', '', test)
print(test)

#HereToHelp STUFF #DataScience
 STUFF 
test=“#此处帮助资料#数据科学”
打印(测试)

test=re.sub(r'(?:(?您的
\b
未正确放置

您的正则表达式应为:

r'#\b\w+\b'

而且,
+
量词意味着一次或多次出现,从而节省了对您的
\w\w*

的需求。我知道有一个公认的答案,但我提出的这个regexp似乎也很好用,我个人更喜欢它,因为它更容易阅读:

(\A|[^#\d\w])#\w\w*\b
试试这个:

test ="# #DataScience #KJSBDKJ kjndjk#jnjkd #jkzcjkh# iusadhuish#"
test = re.sub(r'(?<!\S)#(?=\S)', '', test)

如果这个答案解决了你的问题,那么考虑一下点击左边的绿色复选标记来接受它。我只是这么做了!对不起,之前没有接受这个答案。实际上,还有一件事我很抱歉。这个ReGEX删除了整个单词,从'y'开始,实际上我只是想删除“y'”并保留剩余的STR。我意识到我的问题是不正确的。我非常感谢你的帮助。这个正则表达式不适用于我的唯一的情况是当“*”在中间时。因为预期的输出将有整个单词,但是输出不是。例如,在“KJNJJK JJJKD”中,输出应该是单词本身,但它返回“KJNDJK”。。在
#
后面总是有字符吗?是的!单词总是以“#”开头,后面跟着单词。输出应该是单词,但开头没有“#”!我对我问题中的错误深表歉意。你能帮我吗?啊,我明白了。嗨!非常感谢你的帮助!我的qu确实犯了一个错误结果输出应该是不带“#”的单词在前面。因此,对于所有以“#”开头的单词和后面跟着一些单词的单词,输出应该是单词,而不是“#”。对于我的问题中出现的错误,我感到非常抱歉。应该注意的是,您可以将
\w\w*
更改为仅
\w+
effect@AnayPurohit,你应该用几个例子来更新这个问题字符串和预期结果的组合,以便understand@arieljuod我刚刚根据你的建议添加了一些例子!@egragoth如果你能帮助我,我将不胜感激!
# DataScience KJSBDKJ kjndjk#jnjkd jkzcjkh# iusadhuish#