这里相当新的Python(和Stack Overflow!)。我有一个主题行数据(文本字符串)的数据集,我正在建立一个单词模型包。我正在为各种可能的场景创建标记0或1的新变量,但是我试图找出文本中有省略号(“...”)的位置。这是我开始的地方:
Data_Frame['Elipses'] = Data_Frame.Subject_Line.str.match('(\w+)\.{2,}(.+)')
输入('...')由于显而易见的原因不起作用,但建议使用上述RegEx代码 - 仍然无效。还试过这个:
Data_Frame['Elipses'] = Data_Frame.Subject_Line.str.match('.\.\.\')
没有骰子。
上面的代码shell适用于我创建的其他变量,但我也无法创建0-1输出而不是True / False(在R中是'as.numeric'参数)。任何帮助在这里也会受到赞赏。
谢谢!
答案 0 :(得分:2)
使用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文档中查看search-vs-match以获得一个很好的解释。
显示匹配的字词:
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)
给你:
again
is