Python 如何删除出现多次的字符后面的字符串?

Python 如何删除出现多次的字符后面的字符串?,python,sas,Python,Sas,我有一段话: 政府当局指任何国家或政府。这一术语将作进一步解释。担保义务是指对任何人(无重复)的任何义务。知识产权是指与任何知识产权相关的所有实际或预期权利 在本段中,表示出现三次。我想删除第二次出现means之后的所有字符串。在上述情况下,我想要的结果是: 政府当局指任何国家或政府。这一术语将作进一步解释。担保义务 请问如何通过SAS实现这一点 或者Python也可以,但问题是现在我有了一个包含两列的表。第一列是firmname,另一列是段落,其中包括与上面一样的段落。我有很多观察。我如何生成

我有一段话: 政府当局指任何国家或政府。这一术语将作进一步解释。担保义务是指对任何人(无重复)的任何义务。知识产权是指与任何知识产权相关的所有实际或预期权利

在本段中,表示出现三次。我想删除第二次出现means之后的所有字符串。在上述情况下,我想要的结果是: 政府当局指任何国家或政府。这一术语将作进一步解释。担保义务

请问如何通过SAS实现这一点


或者Python也可以,但问题是现在我有了一个包含两列的表。第一列是firmname,另一列是段落,其中包括与上面一样的段落。我有很多观察。我如何生成一个新列来显示第二个表示之前的字符串?

您可以尝试这样的方法

text = """Governmental Authority means any nation or government. 
The term would be explained further. Guaranty Obligations means as to any 
Person (without duplication) any obligation. Intellectual Property Rights 
means all actual or prospective rights arising in connection with 
any intellectual property."""

means_indexes = [ix for ix, i in enumerate(text.split()) if i == 'means']
txt = ''
if len(means_indexes) > 1: txt = ' '.join(text.split()[0:temp[1]])
else: txt = text

print(txt)
“政府当局”指任何国家或政府。这个词会 请进一步解释。担保义务


你可以试试这样的

text = """Governmental Authority means any nation or government. 
The term would be explained further. Guaranty Obligations means as to any 
Person (without duplication) any obligation. Intellectual Property Rights 
means all actual or prospective rights arising in connection with 
any intellectual property."""

means_indexes = [ix for ix, i in enumerate(text.split()) if i == 'means']
txt = ''
if len(means_indexes) > 1: txt = ' '.join(text.split()[0:temp[1]])
else: txt = text

print(txt)
“政府当局”指任何国家或政府。这个词会 请进一步解释。担保义务

您可以在SAS中使用
FINDW()
。FINDW中的第四个参数是从何处开始搜索,因此搜索两次。 进行一次搜索以查找第一个术语。 进行第二次搜索以查找第二个术语

您可能希望查看修饰符的选项,尤其是在数据不完全相同的情况下。可以选择忽略大小写,也可以使用
UPCASE()
使所有内容都大写

data have;
    length text want $5000;
    search_term='means';
    text="Governmental Authority means any nation or government. The term would be explained further. Guaranty Obligations means as to any Person (without duplication) any obligation. Intellectual Property Rights means all actual or prospective rights arising in connection with any intellectual property.";
    first_mean=findw(text, search_term);
    second_mean=findw(text, search_term, ' ', first_mean+5);
    want=substr(text, 1, second_mean-2);
run;

proc print;
run;
您可以在SAS中使用
FINDW()
。FINDW中的第四个参数是从何处开始搜索,因此搜索两次。 进行一次搜索以查找第一个术语。 进行第二次搜索以查找第二个术语

您可能希望查看修饰符的选项,尤其是在数据不完全相同的情况下。可以选择忽略大小写,也可以使用
UPCASE()
使所有内容都大写

data have;
    length text want $5000;
    search_term='means';
    text="Governmental Authority means any nation or government. The term would be explained further. Guaranty Obligations means as to any Person (without duplication) any obligation. Intellectual Property Rights means all actual or prospective rights arising in connection with any intellectual property.";
    first_mean=findw(text, search_term);
    second_mean=findw(text, search_term, ' ', first_mean+5);
    want=substr(text, 1, second_mean-2);
run;

proc print;
run;

是的,它起作用了。然而,它在一个表中是如何工作的,这里的文本只是一列?你的意思是你有一个包含多个文本段的列?我的意思是我有一个有许多行和两列的表。其中一列称为段落,其中包括段落。遍历该列并以迭代方式应用上述函数。请问如何对迭代进行编码?非常感谢!是的,它起作用了。然而,它在一个表中是如何工作的,这里的文本只是一列?你的意思是你有一个包含多个文本段的列?我的意思是我有一个有许多行和两列的表。其中一列称为段落,其中包括段落。遍历该列并以迭代方式应用上述函数。请问如何对迭代进行编码?非常感谢!这不是一个代码编写服务-自己动手,然后就阻止您前进的特定问题寻求帮助。这不是一个代码编写服务-自己动手,然后就阻止您前进的特定问题寻求帮助。