如何在文本字符串Python中查找省略号?

如何在文本字符串Python中查找省略号?,python,regex,Python,Regex,在这里,Python(和堆栈溢出!)是一个相当新的概念。我有一个包含主题行数据(文本字符串)的数据集,我正在用它构建一个单词包模型。我正在创建新的变量,为各种可能的场景标记0或1,但我一直在尝试确定文本中哪里有省略号(“…”)。以下是我的出发点: Data_Frame['Elipses'] = Data_Frame.Subject_Line.str.match('(\w+)\.{2,}(.+)') 由于明显的原因,输入(“…”)不起作用,但上面的正则表达式代码仍然不起作用。我也试过: Data

在这里,Python(和堆栈溢出!)是一个相当新的概念。我有一个包含主题行数据(文本字符串)的数据集,我正在用它构建一个单词包模型。我正在创建新的变量,为各种可能的场景标记0或1,但我一直在尝试确定文本中哪里有省略号(“…”)。以下是我的出发点:

Data_Frame['Elipses'] = Data_Frame.Subject_Line.str.match('(\w+)\.{2,}(.+)')
由于明显的原因,输入(“…”)不起作用,但上面的正则表达式代码仍然不起作用。我也试过:

Data_Frame['Elipses'] = Data_Frame.Subject_Line.str.match('.\.\.\')
没有骰子

上面的代码shell适用于我创建的其他变量,但我在创建0-1输出而不是True/False(在R中是'as.numeric'参数)时也遇到了问题。这里的任何帮助也将不胜感激

谢谢

使用
search()
而不是
match()
会在文本中的任何一点发现一个省略号。如果需要返回
0
1
,请先转换为bool,然后转换为int

import re

for test in ["hello..", "again... this", "is......a test",  "...def"]:
    print int(bool(re.search(r'(\w+)\.{3,}', test)))
这与中间两个测试相匹配:

0
1.
1.
0
查看Python文档中的详细解释


要显示匹配的单词,请执行以下操作:

import re

for test in ["hello..", "again... this", "is......a test",  "...def"]:
    ellipses = re.search(r'(\w+)\.{3,}', test)

    if ellipses:
        print ellipses.group(1)
给你:

又是

只有3个句号(
)或一个适当的省略号(
)。你能举一个主题行的例子吗?看起来转义字符的位置不对。反斜杠应该在句号之前。下面是一个示例主题行:“,psst…是时候换一个新产品名了”可能有3个句号和一个适当的省略号。在这种情况下,我想在正则表达式中使用or语句来捕获这两种情况。我不知道您使用的是什么库,但为什么不在Data_Frame['Elipes']中使用
“if…”“
”?这似乎更接近。下面是我根据您的答案改编的代码:
Data\u Frame['Ellipsis']=re.search(r'(\w+)\.{3,}',str(Data\u Frame.Subject\u Line))
出于某种原因,在这种情况下,我不得不将数据集转换为字符串,即使它已经是一个字符串。然而,CSV输出中数据的每个实例的输出都是这样的:
,看起来它在匹配(搜索),但在每个实例中都找到了匹配项。这看起来对吗?还有一种方法可以使输出为0/1吗?如果没有看到源文本,很难说。线路长度有意义吗?e、 g.
打印镜头(str(数据框主题行))
?转换为
bool()
然后再转换为
int()
将返回
0
1