Python中的字符串和单词操作

Python中的字符串和单词操作,python,string,nlp,Python,String,Nlp,例如: 我有一句话“Face book是一家社交网络公司”,我想通过将“Face”和“book”连接到“Facebook”来清理这句话。我想检查并执行许多句子。有什么建议我可以这样做吗 我想到了这样一句话:首先标记句子,然后循环每个单词,检查“face”后面的标记词是否是“book”,然后删除这两个元素和所有的“Facebook”。简单的基于正则表达式的方法不够吗 >>> import re >>> s='Face book is a social netwo

例如:

我有一句话“Face book是一家社交网络公司”,我想通过将“Face”和“book”连接到“Facebook”来清理这句话。我想检查并执行许多句子。有什么建议我可以这样做吗


我想到了这样一句话:首先标记句子,然后循环每个单词,检查“face”后面的标记词是否是“book”,然后删除这两个元素和所有的“Facebook”。

简单的基于正则表达式的方法不够吗

>>> import re
>>> s='Face book is a social networking company'
>>> re.sub(r'[Ff]ace [Bb]ook', 'Facebook', s)
'Facebook is a social networking company'

在Python中,这可能如下所示: 请记住,这只是一个粗略的想法,并非在所有情况下都是完美的

----------

string = “I use Face book”
tokenized = string.split(“ “)
for i in range(0,len(tokenized)-1):
    if tokenized[i].lower()==“face” and tokenized[i+1].lower()==“book”:
        del tokenized[i+1]
        tokenized[i] = “Facebook”
    if i > len(tokenized):
        break

-----------对我来说,在python中实现这一点最直接的方法是使用元组。在应用str.replaceold新方法时,只需将所有字符串打包成一个元组并循环。str.replaceold,new用指定的新子字符串替换字符串str中的子字符串。示例如下:

string = “I use Face book”
tokenized = string.split(“ “)
for i in range(0,len(tokenized)-1):
    if tokenized[i].lower()==“face” and tokenized[i+1].lower()==“book”:
        del tokenized[i+1]
        tokenized[i] = “Facebook”
    if i > len(tokenized):
        break
代码:

输出:


replaceFace book,facebook您可能希望使您的正则表达式更加通用化,以使其真正更有利于子字符串方法。例如:允许它处理facebook、facebook和facebook如果您只是使用这样的固定字符串,那么没有理由使用正则表达式;只是字符串操作。
Facebook is a social networking company1
Facebook is a social networking company2
Facebook is a social networking company3