我想将这些电子邮件结果保存到目录中的results.txt文件中。
def parseAddress():
try:
website = urllib2.urlopen(getAddress())
html = website.read()
addys = re.findall('''[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?''', html, flags=re.IGNORECASE)
print addys
except urllib2.HTTPError, err:
print "Cannot retrieve URL: HTTP Error Code: ", err.code
except urllib2.URLError, err:
print "Cannot retrive URL: " + err.reason[1]
# need to write the addys data to results.txt
with open('results.txt', 'w') as f:
result_line = f.writelines(addys)
答案 0 :(得分:0)
你错误地将“with”语句缩进了一个空格。这使得它对于早期的块是主观的。我认为任何自尊的Python解释器都会将其标记为不匹配任何早期的缩进,但它似乎会污染您的输出。
另外,请考虑添加一些跟踪打印语句,以查看代码执行的位置。仅此输出通常可以向您显示问题,或引导我们。您应始终为我们提供实际输出,而不仅仅是一般性描述。
答案 1 :(得分:0)
在功能结束时使用sscanf( str, "%d %lf %lf %lf, &id, &z, &r, &d);
for(int i = 0; i < 12; i++) // easy to control skip how many number
sscanf( str, "%lf, &tmp);
sscanf( str, "%lf %lf", &sfr, &xid);
。 return addys
只会输出到您的屏幕。
要检索print
,您需要在addys
语句中调用该函数,或创建包含with
结果的变量。
您可以通过简单地调用函数来保存变量将使用的内存,如下所示:
parseAddress()
答案 2 :(得分:0)
您需要修复缩进,这在Python中非常重要,因为它是定义代码块的唯一方法。
您的try
区块中也有太多陈述。
def parseAddress():
website = None
try:
website = urllib2.urlopen(getAddress())
except urllib2.HTTPError, err:
print "Cannot retrieve URL: HTTP Error Code: ", err.code
except urllib2.URLError, err:
print "Cannot retrive URL: " + err.reason[1]
if website is not None:
html = website.read()
addys = re.findall('''[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?''', html, flags=re.IGNORECASE)
print addys
# need to write the addys data to results.txt
with open('results.txt', 'w') as f:
result_line = f.writelines(addys)