提取“ ............”之前的字符串

时间:2019-03-06 10:09:23

标签: python regex

我想在很多点之前提取信息。

例如,如果我的字符串是:“” Profile Tests .................................... .....”。我只想提取“配置文件测试”。

我的实际代码是:

s1 = "Profile Tests ........................................."
s1.partition('.')[0]

之所以起作用,是因为我得到了“配置文件测试”,但是当我尝试另一个字符串时,例如:

s1 = "Issuer may be subject to a 30 per cent."
s1.partition('.')[0]

我得到“发行人的税率可能为30%”。但是如果我只有一个点,我不想提取。

仅当我有很多“。”时,我将如何提取信息。在我的字符串中?

4 个答案:

答案 0 :(得分:0)

在分区功能中将分隔符设置为要查找的点数。因此,例如,如果您希望3点提取前一个字符串,则应使用:

s1.partition('...')[0]

然后,您应该考虑到,如果字符串“ ...”不在s1中,则应返回null(或所需的任何值),因此最终代码将是:

if s1.partition('...')[0] is s1:
    result = null
else:
    result = s1.partition('...')[0]

答案 1 :(得分:0)

l ='发行人的税率可能为30%。

使用下面的命令 如果l.count('。')> 1,否则l.replace('。','')l

答案 2 :(得分:0)

您可以使用此正则表达式匹配结尾处带有3个或更多点的字符串。 您可以在字符类([])中匹配所需的任何内容,并指定其后必须有3个或更多的点。

正则表达式:([\w ]+)\.{3,}$

演示:https://regex101.com/r/MbSJWo/2

答案 3 :(得分:-1)

您可以找到第一个'。使用str类型的find方法。然后,您可以使用slice运算符在“。”之前获取子字符串。字符。

st = 'Profile Tests .........................................'
loc = st.find('.')
st = st[:loc]