python - 如何在Python中将字符串拆分为单词,即使单词有标点符号
问题描述
我正在尝试使用一本长字典制作法语翻译。我想将字符串拆分成单词,即使单词有标点符号。
我已经尝试将带有标点符号的项目添加到字典中,例如 ["Hello!": "Bonjour!"],但这会花费相当长的时间,并且可能有更紧凑和简单的方法可以做到这一点。
代码:
frtext = "__"
FRTEXT = []
french = {
"hello": "bonjour",
"Hello": "Bonjour",
"What": "Qu'est-ce que"
}
text = input("Enter text: ")
TEXT = text.split()
for x in range(len(TEXT)):
if TEXT[x] in french:
frtext = french[TEXT[x]]
FRTEXT.append(frtext)
预期输出:
["Hello!"]
["Bonjour!"]
实际输出:
["Hello!"]
["__""]
有没有办法做到这一点,如果有,你怎么做?任何答案将不胜感激。
解决方案
看看这个,它可以帮助你忽略字母的大小写。对于标点符号,您可以将其删除,任何不在 az 或 AZ 范围内的内容都会从文本中删除。
稍作改动,所以如果没有有效的翻译,他还是会附加原件:
for word in TEXT:
word = word.lower()
if word in french:
frtext = french[word]
else:
frtext = word
FRTEXT.append(frtext)
对您的代码的改进:
frword = ''
frtext = []
translator = {
'hello': 'bonjour',
'what': 'qu\'est-ce que'
}
text = input('Enter text: ')
for word in text.split():
word = word.lower()
word = translator.get(word, word)
frtext.append(word)
print(' '.join(frtext))
删除标点符号很简单:
import string
final_text = ''
letters = string.ascii_lowercase + string.ascii_uppercase + ' '
for letter in text:
if letter in letters:
final_text += letter
然后你处理final_text
.
当然,这是一个简单的解决方案,更进一步需要更多的知识并使用NLP等其他技术。
推荐阅读
- node.js - 为什么我的外键列在使用 Sequelize 和 Postgres 发送 POST 请求后返回两次?
- express - “accessibleFieldsPlugin”不包含虚拟字段
- sqlite - 从一个表中选择满足另一个表条件的字段
- javascript - 如何将“拖放”文件上传功能添加到简单的 Web 表单?
- python - python中的ODE求解系统;在本次通话中完成的多余工作
- discord.py - 多个任务未运行
- python - 我正在尝试制作一个 youtube 下载器电报机器人,但我遇到了一些问题,有人可以帮助我吗?
- javascript - JavaScript 模板字符串不显示我的值
- jquery - 使用 Laravel 8 Livewire 组件更新图像
- java - Gradle 不再解决我的依赖关系 - 但是设置了存储库