【问题标题】:how do i remove characters between 2 different characters inside a string如何删除字符串中 2 个不同字符之间的字符
【发布时间】:2022-11-23 20:48:01
【问题描述】:

所以我在一个文本文件中有这个:

"00:00:25,58 --> 00:00:27,91 (DRAMATIC MUSIC PLAYING)"

我想删除里面的字符并包括大括号本身:

"00:00:25,58 --> 00:00:27,91 "


eng_sub = open(text).read()
eng_sub2 = re.sub("\(", "", eng_sub)
new_eng_sub = re.sub("\)", "", eng_sub2)

open(text, "w").write(new_eng_sub)

我试过使用 sub() 并删除了一个字符,但我真正想做的是在这两个字符之间操作字符(即“(”,“)”)字符。

我不知道该怎么做。感谢您的帮助。

【问题讨论】:

  • 这回答了你的问题了吗? How to delete the words between two delimiters?
  • I want to remove characters inside and including the braces itself, but what i really want to do is manipulate characters between those 2 (i.e. "(" , ")") characters. 那是哪一个?你想要什么操作?

标签: python python-3.x string


【解决方案1】:

您可以尝试匹配模式(.*?)

eng_sub = open(text).read()
eng_sub2 = re.sub(r'(.*?)', '', eng_sub)

open(text, "w").write(eng_sub2)

【讨论】:

  • r's+(.*?)' 将删除第一个 ( 之前的所有不可打印字符(即 s+
  • 但随后我将不得不为文本的不同部分分别手动执行此操作,因为它看起来像这样,** 11 00:02:23,04 --> 00:02:25,58(在扬声器上播放电子音乐)12 00:02:43,75 --> 00:02:45,08 您在最后付款。 ** 有时也这样,** 27 00:03:27,41 --> 00:03:28,58 表现。 28 00:03:30,75 --> 00:03:32,91 -(咯咯笑)-哦,她很有趣,不是吗? ** 所以如果我这样做,我需要手动完成吗?或者我错了
  • 原始问题中没有指出这一点,因此没有人能猜到。请更清楚地说明您问题中的可能输入和预期输出。
【解决方案2】:

实际上,您不能使用只会删除模式的“sub”方法。 但是您可以做的(并且不太复杂)是使用“findall”(也存在于 re 库中),它允许您在 STR 中提取模式 这是一个简单的例子:

import re
text = "00:00:25,58 --> 00:00:27,91 (DRAMATIC MUSIC PLAYING)"
print(re.findall(r"(.*)", text)[0])

输出:(DRAMATIC MUSIC PLAYING)

一旦你提取了你想要操作的东西,你可以通过 sub 删除这个模式

print(re.sub(r"(.*)", '', text))

【讨论】:

    猜你喜欢
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 2016-08-20
    • 1970-01-01
    • 2020-10-15
    相关资源
    最近更新 更多