首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除字符串开头的重复子字符串。

删除字符串开头的重复子字符串。
EN

Stack Overflow用户
提问于 2022-03-07 08:47:40
回答 1查看 80关注 0票数 0

在存在重复的字符串开始时,我希望恢复重复子字符串。我在某种程度上让第一行(见下文)的逻辑工作,但是对于Python来说还很陌生,所以我很难生成代码,这些代码将应用于更大的数据集中的行。

以下是一个例子:

created

  • Output:
  • 输入:原始数据,我想用

来结束

代码语言:javascript
复制
df = pd.DataFrame({
    'Input' : ['john only played once john only played once yesterday. he may try again today', 'she didnt like eggs', np.nan, 'george found a dog lying in george found a dog lying in front of his car'],
    'Output' : ['john only played once yesterday. he may try again today', 'she didnt like eggs', '', 'george found a dog lying in front of his car'],
})

c = 20
df["Input_adj"] = df["Input"].str[0:c]

Input_1 = df["Input"][0]
Input_adj_1 = df["Input_adj"][0]
print(Input_1)
print(Input_adj_1)

Input_1_cut = Input_1.find(Input_adj_1, Input_1.find(Input_adj_1) + 1)
print(Input_1[Input_1_cut:])

我知道可能还有其他的方法可以做到这一点,只要输出符合我的要求,我就不会对所使用的方法特别感兴趣。

如何使用更简单的代码将输入值转换为输出值?

编辑其中一个注释确实解决了这个问题,但它似乎不适用于下面的输入值(实际文本没有换行符,但我已经在下面添加了一些以更好地说明复制的文本):

里德·布伦南来到伊斯顿学院,希望能找到一种田园诗般的私立学校体验--充满挑战的课程,可爱的预科男孩,以及为自己创造新生活的机会。相反,她发现了谎言、欺骗、敲诈、and...murder。但谢天谢地,凶手被抓住了,噩梦终于结束了。现在,她又迎来了新的学年。

里德·布伦南来到伊斯顿学院,希望找到一种田园诗般的私立学校体验--富有挑战性的课程,可爱的预科男孩,以及为自己创造新生活的机会。相反,她发现了谎言,欺骗,敲诈,and...murder。但谢天谢地,凶手被抓住了,噩梦终于结束了。现在,她还有一个新的学年,再来

艾德回到伊斯顿常春藤覆盖的校园,准备重新开始。因此,当校长宣布禁止携带传统的秘密印钞时,里德如释重负。她拥护新的规定和政府挑选的六个新女孩住在比林斯大厅:康斯坦斯,米西,洛娜,基基,阿斯特丽德和新来的萨宾。但里德的同胞比林斯居民和新的宿敌夏延马丁认为,这些变化是对比林斯历史的嘲弄。尽管有新的规定,夏安誓言要保持旧的生活方式,不管是什么--或者--阻碍她的方式.“

有人知道如何让它在这个例子中起作用吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-07 10:16:52

可以在输入列上使用str.replace和regex:

代码语言:javascript
复制
import re
df['Output'] = df['Input'].str.replace(r'^(.*)\1', r'\1', regex=True, flags=re.DOTALL)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71378448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档