如何从 python 中的字符串中去除某些字符

How to strip certain characters from a string in python

我正在尝试从字符串中去除某些字符。我的字符串是 -

test_list = ['INFO:      196ns ### Starting ABC Test ###\n', 'INFO:     310ns ### Starting write_def_test ###\n', 'INFO:     752ns ### Starting write_55s_test ###\n', 'INFO:    152ns ### Starting rands_test ###\n', 'INFO:    237ns ### Starting dog_wffs_test ###\n']

我的密码是-

test_list_1 = []
for i in test_list:
    m = i.strip("INFO:      ")
    m = m.strip("###")
    test_list_1.append(m)
print(test_list_1)

我要找的输出是-

['ABC Test', 'write_def_test', 'write_55s_test', 'rands_test', 'dog_wffs_test']

如何获取?

这是一个使用正则表达式的例子:

import re

test_list = ['INFO:      196ns ### Starting ABC Test ###\n', 'INFO:     310ns ### Starting write_def_test ###\n', 'INFO:     752ns ### Starting write_55s_test ###\n', 'INFO:    152ns ### Starting rands_test ###\n', 'INFO:    237ns ### Starting dog_wffs_test ###\n']

p = re.compile(r"### Starting (.*?) ###")
output = [next(p.finditer(x)).group(1) for x in test_list]
# or, output = [p.findall(x)[0] for x in test_list]

print(output)
# ['ABC Test', 'write_def_test', 'write_55s_test', 'rands_test', 'dog_wffs_test

这种方法是获取“核心”部分,而不是剥离外围部分。

你最好在这里使用 regex,即:

import re

out = re.findall('Starting ([^#]+)', '|'.join(test_list))

我同意正则表达式可能是进行复杂模式匹配的方法,如果您不能使用它或出于某种原因不想学习它,string.find() 方法对于简单的匹配非常有用像 this/one 这样的情况下,准备正则表达式可能会花费太多时间:

test_list_1 = []
for i in test_list:
    test_list_1.append(i[i.find('### ') + 13 : i.find('###\n') - 1])
print(test_list_1)