如何在python中从单词中分离标点符号?
我正在尝试创建一个拼写检查函数,它读取一个文本文件,其中包含一段包含几个拼错单词的文章。例如:“我最喜欢的科目是:物理、数学、化学和生物——我觉得有必要在课后用iPad做综合笔记。”我有三个问题要解决:如何在python中从单词中分离标点符号?,python,string,spell-checking,Python,String,Spell Checking,我正在尝试创建一个拼写检查函数,它读取一个文本文件,其中包含一段包含几个拼错单词的文章。例如:“我最喜欢的科目是:物理、数学、化学和生物——我觉得有必要在课后用iPad做综合笔记。”我有三个问题要解决: 目前,程序认为数学是一个不正确的单词,因为单词后面有逗号。我认为,为了解决这个问题,最好在文本文件中拆分字符串,如下所示:[“我的”、“最喜欢的”、“主题”、“是”、“是”、“物理”、“数学”、“等等]。如何在不使用任何导入的python函数(例如string或regex(re)函数)的情况下将
是否有效\u word
中使用规则的例外(即,单词必须以大写字母开头,所有其他字母都是小写,或者单词中的所有字符都必须是大写)。有没有办法检查字符串是否为有效单词def get_words():
with open( "english.txt" ) as a:
words = a.readlines()
words = [word.strip() for word in words]
return words
isWord = get_words()
def is_valid_word(st):
if isinstance(st, str):
st_lower = st.lower()
if st_lower in isWord:
if (st[0:len(st)].isupper() or st[0:len(st)].islower()) or (st[0].isupper() and st[1:len(st)].islower()) or st[0:len(st)].isupper():
return (True)
else:
return(False)
else:
return (False)
else:
return (False)
def spell_check_file( file ):
incorrectWords = [] # Will contain all incorrectly spelled words.
num = 0 # Used for line counter.
with open(file, 'r') as f:
for line_no, line in enumerate(f):
for word in line.split():
if is_valid_word(word) == False:
incorrectWords.append(line_no)
incorrectWords.append(word)
for f in incorrectWords:
return incorrectWords
print (incorrectWords)
spell_check_file("passage.txt")
这种任务就是正则表达式的用途。在没有正则表达式的情况下尝试这样做是一种自我惩罚
>>重新导入
>>>pattern=re.compile(r“[\w']+|\s+|[^\w'\s]+”)
>>>我最喜欢的科目是:物理、数学、化学)
[My','favorite','subjects','are',':','Physics',',
“数学”,“化学”
请注意,我在匹配单词的部分中包含了
,
,所以像“不”这样的单词将保持完整。为什么不使用Python内置函数?。isupper()
和。islower()
都是内置函数。当我说内置函数时,我指的是需要导入的任何函数(例如字符串)因为我正在使用的练习本指示我们只使用split()、strip()、replace()等。抱歉,我认为我原来的问题不清楚-我将相应地修改它。提供了一种仅使用split和replace(即无导入)将单词分隔为单词的方法。但是有没有一种方法可以在不使用正则表达式的情况下做到这一点?理论上是肯定的。您可以编写自己的代码,基本上实现这个正则表达式的功能;扫描连续字符,并在下一个连续字符位于不同的字符类时生成一个子字符串。(三个字符类是单词字符、撇号、空格字符和其他所有字符。)不过,我认为在这里避免正则表达式没有什么教育价值,因为如果你想学习如何进行字符串操作,那么你真的应该学习如何使用正则表达式。