新手提问 python for循环问题 print (y) #这里为啥只输出一行?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手提问 python for循环问题 print (y) #这里为啥只输出一行?相关的知识,希望对你有一定的参考价值。
import re
i1 = open('test.txt','r').read()
str =input('初始值:')
str1 =input('结束值:')
i2 = re.findall(r""+str+"(.*?)"+str1+"", i1, re.MULTILINE | re.DOTALL)
for i in i2:
print (i) #到这里正确
x = i
str2 =input('初始值:')
str3 =input('结束值:')
i3 = re.findall(r"("+str2+".*?"+str3+")",x, re.MULTILINE | re.DOTALL)
for y in i3:
print (y) #这里为什么只输出一行?
test.txt:这是里面的内容
hello
hlllllllll
eeee11
dfsfsd
333
hi
hello
hlllllllll
eeee11
dfsfsd
333
hi
hello
hlllllllll
eeee11
dfsfsd
333
hi
第一步匹配hello到hi显示正确,第二步不循环,哪里错了?
不要看文档里的数据,把i3打印出来,看看i3的长度
print len(i3)
应该是x = i 这里的i只有一行,不是循环后的数据,应该怎么改?
追答因为循环结束了,所以x = i 是最后一行的数据,如果你是想打出每一行的匹配结果,最后一个循环这样改,打出每一行匹配的结果,数据结构是列表
for i in i2:
i3 = re.findall(r"("+str2+".*?"+str3+")",i, re.MULTILINE | re.DOTALL)
print i3
老师你好,怎样不已列表的形式显示?改了程序是这种显示方式
['llllllll\neeee11\ndfsfsd\n']
['llllllll\neeee11\ndfsfsd\n']
['llllllll\neeee11\ndfsfsd\n']
re.findall 返回的是列表,用其他正则方法
re.match(r"("+str2+".*?"+str3+")",x, re.MULTILINE | re.DOTALL).group()
re.search(r"("+str2+".*?"+str3+")",x, re.MULTILINE | re.DOTALL
).group()追问
python3.5用什么打包
追答py2exe和pyinstaller,推荐pyinstaller,用命令行打包,不用再写脚本
参考技术A print len(i3) 你看看python FOR循环
answer = 10 for i in range(3): guess = int(input(‘猜一个‘)) if guess == answer: print(‘ok‘) break elif guess > answer: print(‘猜大了‘) else: print(‘猜小了‘) else: print(‘机会用完了‘) for i in range(10): print(‘loop‘,i) print(‘---------‘) for i in range(0,10,2): #最后一个2是步进值 print(‘loop‘,i) print(‘---------‘) for i in range(1,11): #或者可以定义从1开始到11,也是10个循环 print(‘loop‘,i) print(‘---------‘)
以上是关于新手提问 python for循环问题 print (y) #这里为啥只输出一行?的主要内容,如果未能解决你的问题,请参考以下文章