如何从 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)
我正在尝试从字符串中去除某些字符。我的字符串是 -
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)