通过正则表达式删除行尾的截断字

2024-06-01 00:47:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些文本,有时在我想删除的结尾有一个特定单词的开头[例如TRUNCATED]。例如:

 foo bar TRUNC
 bar foo TRUNCATED
 foo bar bar TRU
 foo
 foo bar bar bar TRUNCA

我如何通过regex删除它-我想一定有比以下更好的方法:

 corrected = re.sub(r" (T|TR|TRU|TRUN|TRUNC|TRUNCA|TRUNCAT|TRUNCATE|TRUNCATED)$", "", original)

【注意:如果相关,截断位置不一致—即有时从第20个字符截断,其他时间更长】


Tags: 方法文本refoo结尾bar单词tr
2条回答

您可以使用以下选项:

T(R(U(N(C(A(T(ED?)?)?)?)?)?)?)?

代码:

 corrected = re.sub(r" (T(R(U(N(C(A(T(ED?)?)?)?)?)?)?)?)$", "", original)

你为什么要用正则表达式呢?就这么做吧

s = "foo TRU"
l = s.rsplit(" ", 1)   # gives "foo" as long as TRUwhatever is the last word
final = l[0] if len(l) == 2 and l[1].startswith("T") else s

相关问题 更多 >