提问人:Ravi Gupta 提问时间:9/27/2023 最后编辑:snakecharmerbRavi Gupta 更新时间:9/28/2023 访问量:66
如何用非单词字符的替换单词替换完全匹配的印地语单词(如विषयों)[重复]
How to replace exact matching hindi words with substitute word in for non-word characters (like विषयों) [duplicate]
问:
我正在使用 python 3 Jupyter 笔记本。我想编写代码来从我的列表中搜索特定单词,如果它完全匹配,我想用替换单词替换它。我想确保这是完全匹配的,而不是一个单词的部分匹配。输入词可以是印地语或英语或音译。
Input string - "जेईई मेन पाठ्यक्रम 2024 को पढ़ने से न केवल आपको यह समझने में मदद मिलेगी कि आपको किन विषयों का अध्ययन करने की आवश्यकता है, बल्कि यह आपको तदनुसार एक अध्ययन योजना तैयार करने में भी मदद करेगा। पाठ्यक्रम आपको यह सुनिश्चित करने में भी मदद करेगा कि परीक्षा की तैयारी के दौरान आप कोई भी विषय न छोड़ें।"
word to be searched = ["विषयक" , "विषय" , "topic"]
substitute word = "टॉपिक"
- 这是我的代码及其输出 -
import re
def exact_match_replace(input_text, search_word, substitute_word):
# Escape special characters in search word and create a regex pattern
search_pattern = rf"\b{re.escape(search_word)}\b"
# Use regex to find exact matches and replace with substitute word
result = re.sub(search_pattern, substitute_word, input_text, flags=re.IGNORECASE)
return result
# Sample usage
input_text = "जेईई मेन पाठ्यक्रम 2024 को पढ़ने से न केवल आपको यह समझने में मदद मिलेगी कि आपको किन विषयों का अध्ययन करने की आवश्यकता है, बल्कि यह आपको तदनुसार एक अध्ययन योजना तैयार करने में भी मदद करेगा। पाठ्यक्रम आपको यह सुनिश्चित करने में भी मदद करेगा कि परीक्षा की तैयारी के दौरान आप कोई भी विषय न छोड़ें।"
search_word = "विषय"
substitute_word = "टॉपिक"
result_text = exact_match_replace(input_text, search_word, substitute_word)
print(result_text)
代码的实际输出:
阅读 JEE Main 教学大纲 2024 不仅可以帮助您了解需要学习哪些主题,还可以帮助您相应地准备学习计划。教学大纲还将帮助您确保在准备考试时不会错过任何主题。
预期输出
阅读 JEE Main 教学大纲 2024 不仅可以帮助您了解需要学习的主题,还可以帮助您相应地准备学习计划。教学大纲还将帮助您确保在准备考试时不会错过任何主题。
\b 元字符与空字符串匹配,但仅在单词的开头或结尾匹配。但是,它不适用于具有非单词字符的单词(如 विषयों)。
期望 - 应按预期输出工作的代码解决方案。
答:
2赞
Andj
9/28/2023
#1
您需要使用正则表达式模块而不是 re 模块。
re模块对和的定义不是你所期望的,任何具有Mark一般类别的字符都不会被Python视为构词字符。这与Unicode的定义不同。\w
\b
例如:
import re
search_word = "विषय"
re.findall(r'\b\w+\b', search_word)
# ['व', 'षय']
独立元音是非单词字符,并且 re 不会与您的搜索词匹配,因为单词边界位于搜索词内。
请改用 install regex:
pip install -U regex
然后,将 import 语句替换为
import regex as re
这为您提供了:
import regex as re
def exact_match_replace(input_text, search_word, substitute_word):
# Escape special characters in search word and create a regex pattern
search_pattern = rf"\b{re.escape(search_word)}\b"
# Use regex to find exact matches and replace with substitute word
result = re.sub(search_pattern, substitute_word, input_text, flags=re.IGNORECASE)
return result
# Sample usage
input_text = "जेईई मेन पाठ्यक्रम 2024 को पढ़ने से न केवल आपको यह समझने में मदद मिलेगी कि आपको किन विषयों का अध्ययन करने की आवश्यकता है, बल्कि यह आपको तदनुसार एक अध्ययन योजना तैयार करने में भी मदद करेगा। पाठ्यक्रम आपको यह सुनिश्चित करने में भी मदद करेगा कि परीक्षा की तैयारी के दौरान आप कोई भी विषय न छोड़ें।"
search_word = "विषय"
substitute_word = "टॉपिक"
result_text = exact_match_replace(input_text, search_word, substitute_word)
print(result_text)
# जेईई मेन पाठ्यक्रम 2024 को पढ़ने से न केवल आपको यह समझने में मदद मिलेगी कि आपको किन विषयों का
# अध्ययन करने की आवश्यकता है, बल्कि यह आपको तदनुसार एक अध्ययन योजना तैयार करने में भी मदद करेगा।
# पाठ्यक्रम आपको यह सुनिश्चित करने में भी मदद करेगा कि परीक्षा की तैयारी के दौरान आप कोई भी टॉपिक न छोड़ें।
评论
\b
re