我是python的新手,正在尝试将一个函数的参数调用到另一个脚本中。但我一直收到错误。下面是代码:下面的函数的输入是一个文本文件。
script1.py
def regex_parameters(value, arg):
a = re.search(r'\d{1}-\d{1}', value)
b = re.search(r'\d{1}-\d{1}', value)
c = re.search(r'\d{1,4}( \w+){1,6},( \w+){1,3}\s\d{1,6}', value)
d = re.search(r'\(?\b[2-9][0-9]{2}\)?[-. ]?[2-9][0-9]{2}[-. ]?[0-9]{4}\b', value)
date = re.search(r'[A-z]{3,10}\s\d{1,2},\s\d{4}', value)
return(value, arg)script2.py
import script 1
from script1 import *
for i in arg:
identity = regex_parameters(value, i)
if value is not None:
print(i, ":", value.group())
else:
clean = ""我希望输出为:
a = output of regex
b = output of regex任何帮助都是非常感谢的。
发布于 2018-02-11 13:22:30
在中访问变量arg之前,您没有定义该变量:
for i in arg: <---
...这样做:
arg = [... , ... , ...]
for i in arg: <---
...另外,value没有'.group()',因为value仍然是一个。
你假设value是一个Match Object,因为这就是re.search() returns,但你从来没有做过value = re.search(...)。
发布于 2018-02-12 01:10:29
如果您要解析命令行参数,则必须在script2.py中导入sys包import sys。在for i in arg:中,你必须编写for i in sys.argv:而不是arg,结果应该是这样的:
import script1
import sys
from script1 import *
for i in sys.argv:
identity = regex_parameters(value, i)
if value is not None:
print(i, ":", value.group())
else:
clean = ""注意,sys.argv中的第一个参数将是文件名,所以如果您想避免这种情况,应该像这样拼接第一个参数:sys.argv[1:]
有关解析Command-line arguments in Python的更多信息
https://stackoverflow.com/questions/48728371
复制相似问题