Python 如何将不同的文本分组

Python 如何将不同的文本分组,python,pandas,numpy,Python,Pandas,Numpy,我有一个数据框,其中包含字符串。 我想将字符串分为3类: 第一类是字符串中只有单词的字符串 定义的列表,除此之外没有其他内容。只要字符串仅包含该列表中的单词,单词可以是任意顺序。此外,它不必包括列表中的所有单词 第二类是除其他类别外的第一类 可能不在列表中的单词 第三类是所有不是前两类的东西 类别 我首先清除数据,删除所有标点,并将文本转换为小写 示例: list = ["dog name", "dog age", "dog breed"] 对于属于第一类的内容,其字符串应与以下内容完全相

我有一个
数据框
,其中包含字符串。 我想将字符串分为3类:

  • 第一类是字符串中只有单词的字符串 定义的列表,除此之外没有其他内容。只要字符串仅包含该列表中的单词,单词可以是任意顺序。此外,它不必包括列表中的所有单词
  • 第二类是除其他类别外的第一类 可能不在列表中的单词
  • 第三类是所有不是前两类的东西 类别
我首先清除数据,删除所有标点,并将文本转换为小写

示例:

list = ["dog name", "dog age", "dog breed"]
对于属于第一类的内容,其字符串应与以下内容完全相同:

"dog name dog age dog breed".
"my dogs name is suzie and she is a pug who is 4 years old"

"dog age dog name"
对于第二类中的内容,其字符串如下所示:

  "dog name suzie dog age 4 dog breed pug" 

"dog name suzie dog breed pug"
对于属于第三类的内容,其字符串如下所示:

"dog name dog age dog breed".
"my dogs name is suzie and she is a pug who is 4 years old"
对如何将这些分类有何建议/建议


谢谢:)

这是您的伪代码

记住原始字符串
orig

从字符串中删除列表中的所有短语,并将结果放入
new

如果
orig
=
new
您拥有类别3

否则,如果
new
为空,则属于类别1

否则,你有第二类


使用
new=re.sub(r'\b('+r'|'.join(list)+r'\b',orig)
替换所有短语,将单词边界计入帐户。(尽管您确实不想调用变量
list
,因为这会影响Python内置类型。)

欢迎使用堆栈溢出!请提供这些规则是分层的吗?因此,如果字符串是相同的,但也包含列表中的一个或多个单词,您希望将其归类为类别1?请将您的问题记录到您的所有要求中,就像您在注释中添加到现已删除的答案中的要求一样(这似乎正好解决了当前表述的问题)@tripleee接受了你的建议:)@Alolz我看到了你的建议,使用了
(如果有的话)
,所以对于第一类,单词在字符串中的顺序并不重要,只要列表中的单词在字符串中,其他什么都不重要,您建议如何在不进行所有不同组合的情况下进行此操作?