在存在重复的字符串开始时,我希望恢复重复子字符串。我在某种程度上让第一行(见下文)的逻辑工作,但是对于Python来说还很陌生,所以我很难生成代码,这些代码将应用于更大的数据集中的行。
以下是一个例子:
created
来结束
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。但谢天谢地,凶手被抓住了,噩梦终于结束了。现在,她还有一个新的学年,再来
艾德回到伊斯顿常春藤覆盖的校园,准备重新开始。因此,当校长宣布禁止携带传统的秘密印钞时,里德如释重负。她拥护新的规定和政府挑选的六个新女孩住在比林斯大厅:康斯坦斯,米西,洛娜,基基,阿斯特丽德和新来的萨宾。但里德的同胞比林斯居民和新的宿敌夏延马丁认为,这些变化是对比林斯历史的嘲弄。尽管有新的规定,夏安誓言要保持旧的生活方式,不管是什么--或者--阻碍她的方式.“
有人知道如何让它在这个例子中起作用吗?
发布于 2022-03-07 10:16:52
可以在输入列上使用str.replace和regex:
import re
df['Output'] = df['Input'].str.replace(r'^(.*)\1', r'\1', regex=True, flags=re.DOTALL)https://stackoverflow.com/questions/71378448
复制相似问题