Python 将文本文件中的字符串重新格式化为字符串集

Python 将文本文件中的字符串重新格式化为字符串集,python,string,reformatting,Python,String,Reformatting,我有一行是从文本文件中读取的,如下所示: line="('18-1', '29-1', '30-1', '42-1', '44-1')" 我想将其转换为一组字符串,如下所示: expected=['18-1', '29-1', '30-1', '42-1', '44-1'] 有什么想法吗?我尝试了re.sub()以至少去掉括号,但没有效果。您可以使用ast.literal\u eval: import ast line="('18-1', '29-1', '30-1', '42-1', '4

我有一行是从文本文件中读取的,如下所示:

line="('18-1', '29-1', '30-1', '42-1', '44-1')"
我想将其转换为一组字符串,如下所示:

expected=['18-1', '29-1', '30-1', '42-1', '44-1']

有什么想法吗?我尝试了re.sub()以至少去掉括号,但没有效果。

您可以使用
ast.literal\u eval

import ast
line="('18-1', '29-1', '30-1', '42-1', '44-1')"
new_line = list(ast.literal_eval(line))
输出:

['18-1', '29-1', '30-1', '42-1', '44-1']
['18-1', '29-1', '30-1', '42-1', '44-1']
或者,使用
re.findall

import re
vals = re.findall('\d+\-\d+', line)
输出:

['18-1', '29-1', '30-1', '42-1', '44-1']
['18-1', '29-1', '30-1', '42-1', '44-1']

您可以使用
ast.literal\u eval

import ast
line="('18-1', '29-1', '30-1', '42-1', '44-1')"
new_line = list(ast.literal_eval(line))
输出:

['18-1', '29-1', '30-1', '42-1', '44-1']
['18-1', '29-1', '30-1', '42-1', '44-1']
或者,使用
re.findall

import re
vals = re.findall('\d+\-\d+', line)
输出:

['18-1', '29-1', '30-1', '42-1', '44-1']
['18-1', '29-1', '30-1', '42-1', '44-1']

您可以使用
eval
方法来实现需求。详情如下:

line = "('18-1', '29-1', '30-1', '42-1', '44-1')"
result = list(eval(line))
expected = ['18-1', '29-1', '30-1', '42-1', '44-1']

assert expected == result

您可以使用
eval
方法来实现需求。详情如下:

line = "('18-1', '29-1', '30-1', '42-1', '44-1')"
result = list(eval(line))
expected = ['18-1', '29-1', '30-1', '42-1', '44-1']

assert expected == result

ast.literal\u eval
足以完成此任务。无需使用危险的
eval
功能。是的,
ast.literal\u eval
更安全。我同意你的看法。
ast.literal\u eval
足以完成这项任务。无需使用危险的
eval
功能。是的,
ast.literal\u eval
更安全。我同意你的看法,谢谢。很好用,谢谢。工作完美。