我只想检查是否有更好的方法来做这个而不是使用我想出的东西。
问题是我需要解析.py
文件,更确切地说,我必须查找包含多个list
的特定int
名为 id_list 的文件数字。数字可以用多种格式书写。
例如:
id_list = [123456, 789123, 456789]
id_list = [ 123456,
789123,
456789 ]
id_list = [ 123456
,789123
,456789 ]
我想出的作品很好,但为了完美主义,我想知道是否有更平滑的"这样做的方式。
with open(filepath, 'rb') as input_file:
parsed_string = ''
start_flag = False
start_parsing = False
for line in input_file:
if 'id_list' in line:
id_detected = True
if id_detected:
for char in line:
if char == '[':
start_parsing = True
if start_parsing and char != '\n':
parsed_string += char
if char == ']':
id_detected = False
start_parsing = False
break
完成后我只是过滤parsed_string
:
new_string = "".join(filter(lambda char: char.isdigit() or char == ',', parsed_string))
这会让我获得包含数字和逗号的字符串:123456,789123,456789
所以要把它包起来,有什么我可以改进的吗?
答案 0 :(得分:2)
您可以使用正则表达式来解决:
import re
with open(filepath, 'rb') as input_file:
text = input_file.read()
match = re.search(r'id_list\s*=\s*\[(.*?)\]', text, flags=re.DOTALL)
if match is None:
print "Not found"
else:
id_list_str = match.group(1)
id_list = map(int, id_list_str.split(','))
print id_list
答案 1 :(得分:0)
只需使用import
和from
如果您不想导入整个python文件,只需导入您需要的元素
示例
from filename.py import id_list