函数 Returns 单个字符而不是字符串
Function Returns Individual Characters Rather than Strings
我的函数 return 是单个字符而不是单词。
#!/usr/bin/env python3
import re
template_variables = '''
### VARIABLE START ###
@HOSTNAME@
### VARIABLE END ###
'''
# Get variable configuration from template
def get_template_vars_test():
for var_lines in re.findall('### VARIABLE START ###(.*?)### VARIABLE END ###', template_variables, re.DOTALL): # Find content between START and END delimiters
print(var_lines)
return var_lines
# Display the function's output as a list
print(list(get_template_vars_test()))
print(var_lines)
在 get_template_vars_test()
中的输出:
@HOSTNAME@
print(list(get_template_vars_test()))
的输出:
['\n', '@', 'H', 'O', 'S', 'T', 'N', 'A' , 'M', 'E', '@', '\n']
我不知道如何 return 这个词,我需要一些帮助。感谢观看。
编辑:
我的原始问题已解决,但提出了一个关于 return 上的 for 循环和生成串联的单词列表的后续问题。
#!/usr/bin/env python3
import re
template_variables = '''
### VARIABLE START ###
@HOSTNAME@
@RADIUS@
### VARIABLE END ###
'''
# Get variable configuration from template
def get_template_vars_test():
for var_lines in re.findall('### VARIABLE START ###(.*?)### VARIABLE END ###', template_variables, re.DOTALL): # Find content in template_variables between START and END delimiters
return var_lines
print(get_template_vars_test())
print(get_template_vars_test())
的输出:
@HOSTNAME@
@RADIUS@
虽然输出循环被破坏了。
for line in get_template_vars_test():
print(line)
输出:
@
H
O
S
T
N
A
M
E
@
@
R
A
D
I
U
S
@
最终编辑:
我通过将 var_lines
调用到列表中来修复它。
def get_template_vars():
with open(read_file) as template:
for var_lines in re.findall('### VARIABLE START ###(.*?)### VARIABLE END ###', template.read(), re.DOTALL):
var_list = [ var_lines ]
return var_list
我相信正则表达式会生成一个完整的字符串,这是 re.findall、re.DOTALL 和我的条件组合的影响。 list 的默认行为显然会在 \n.
上打断字符串
def get_template_vars():
with open(read_file) as template:
for var_lines in re.findall('### VARIABLE START ###(.*?)### VARIABLE END ###', template.read(), re.DOTALL):
var_list = [ var_lines ]
return var_list
将正则表达式拉入列表即可解决。请参阅原文中的编辑 post。
我的函数 return 是单个字符而不是单词。
#!/usr/bin/env python3
import re
template_variables = '''
### VARIABLE START ###
@HOSTNAME@
### VARIABLE END ###
'''
# Get variable configuration from template
def get_template_vars_test():
for var_lines in re.findall('### VARIABLE START ###(.*?)### VARIABLE END ###', template_variables, re.DOTALL): # Find content between START and END delimiters
print(var_lines)
return var_lines
# Display the function's output as a list
print(list(get_template_vars_test()))
print(var_lines)
在 get_template_vars_test()
中的输出:
@HOSTNAME@
print(list(get_template_vars_test()))
的输出:
['\n', '@', 'H', 'O', 'S', 'T', 'N', 'A' , 'M', 'E', '@', '\n']
我不知道如何 return 这个词,我需要一些帮助。感谢观看。
编辑:
我的原始问题已解决,但提出了一个关于 return 上的 for 循环和生成串联的单词列表的后续问题。
#!/usr/bin/env python3
import re
template_variables = '''
### VARIABLE START ###
@HOSTNAME@
@RADIUS@
### VARIABLE END ###
'''
# Get variable configuration from template
def get_template_vars_test():
for var_lines in re.findall('### VARIABLE START ###(.*?)### VARIABLE END ###', template_variables, re.DOTALL): # Find content in template_variables between START and END delimiters
return var_lines
print(get_template_vars_test())
print(get_template_vars_test())
的输出:
@HOSTNAME@
@RADIUS@
虽然输出循环被破坏了。
for line in get_template_vars_test():
print(line)
输出:
@
H
O
S
T
N
A
M
E
@
@
R
A
D
I
U
S
@
最终编辑:
我通过将 var_lines
调用到列表中来修复它。
def get_template_vars():
with open(read_file) as template:
for var_lines in re.findall('### VARIABLE START ###(.*?)### VARIABLE END ###', template.read(), re.DOTALL):
var_list = [ var_lines ]
return var_list
我相信正则表达式会生成一个完整的字符串,这是 re.findall、re.DOTALL 和我的条件组合的影响。 list 的默认行为显然会在 \n.
上打断字符串def get_template_vars():
with open(read_file) as template:
for var_lines in re.findall('### VARIABLE START ###(.*?)### VARIABLE END ###', template.read(), re.DOTALL):
var_list = [ var_lines ]
return var_list
将正则表达式拉入列表即可解决。请参阅原文中的编辑 post。