我有一个python问题,我不明白为什么它没有启动。代码如下:
import re
sfname='C:\python_Script\Testmain.txt'
i=0
Var1='AS'
Var2=''
Var3=''
with open("C:\python_Script\Testmain.txt") as file_in:
lines = []
for line in file_in:
lines.append(line)
if line.startswith('create view [dbo].'):
print (lines[i])
if not line.startswith('create view [dbo].'):
lines[i]=lines[i].replace("_"," ")
lines[i]= re.sub(r"\bid","key",lines[i])
Var2=lines[i]
Var2=re.sub(r"\bkey","Dimension",Var2)
if not line.endswith("Dimension"):
Var2='Fact Table'
Var3=lines[i] +" "+Var1+" "+Var2
print(Var3)
i+=1
我从中读取的文本文件相对简单,其中包含以下属性:
create view [dbo].Ignore_table
communication_channel_id
user_id
bounce_count
assignment_override_id
create view [dbo].test1
id
test1
基本上,我想忽略任何带有“create view[dbo]”的内容,创建一个print语句,用“Key”替换单词“ID”,添加AS,然后执行以下两项操作之一: 如果)Var2以“键”结尾,则替换为“尺寸”。 如果)var2未以“Key”结尾,则将整个内容重命名为“Fact table”
但出于某种原因,这一秒如果循环将触发,即使它没有以“维度”结束,并且它将始终是“事实表”,为什么
记住,每个变量都存在于内存中的某个地方。用
Dimension
替换\bkey
时,哪个变量保存新字符串?你要检查哪个变量,看它是否以Dimension
结尾注意这些内存问题,问问自己是在更新变量本身,还是在更新变量的副本。这些类型的bug会一直出现
谢谢你,凯德拉克,他的回答恰到好处,让我到达了我需要去的地方。我想我不需要为我的孩子安顿那么多。对于未来的谷歌用户:
有一些变量是您不需要的,例如您的变量
i
和列表lines
,您正在使用它们来操作变量line
的值。在for
循环内的一次性迭代期间,您可以使用变量line
,而无需将其值保留在列表中;您还必须注意,每行的末尾是新行字符\n
关于您的问题,为什么
Var2
值总是'Fact Table'
主要是因为您查看的是变量line
,而不是正在修改的变量Var2
以下是您试图实现的目标的一个版本:
输出:
相关问题 更多 >
编程相关推荐