Python 3.x 在一个分离器之后,有一个钥匙在回路中。如何保存它?
我正在对一系列行进行for循环。每一行都是列表中的一项。我需要在查找用户输入时保留companyID 在打印变量x=True时。我不能用公司ID打印它Python 3.x 在一个分离器之后,有一个钥匙在回路中。如何保存它?,python-3.x,list,loops,search,Python 3.x,List,Loops,Search,我正在对一系列行进行for循环。每一行都是列表中的一项。我需要在查找用户输入时保留companyID 在打印变量x=True时。我不能用公司ID打印它 --------------------------- CompanyID: 000000000000 Pizza: 2 3.15 6.30 spaghetti: 1 7 7 ribye: 2 40 80 --------------------------- CompanyID: 000000000001 burger
---------------------------
CompanyID: 000000000000
Pizza: 2 3.15 6.30
spaghetti: 1 7 7
ribye: 2 40 80
---------------------------
CompanyID: 000000000001
burger: 1 3.15 6.30
spaghetti: 1 7 7
ribye: 2 40 80
--------------------------
您可以使用行分隔符来标识新数据何时开始。一旦看到带“----”的行,就可以开始在新词典中收集信息。对于每一行,通过在“:”上拆分来获取其键和值,并在字典中创建条目 当你看到下一行“----”时,你知道这是该公司数据的结尾,因此,请检查他们是否有该产品,如果有,请从字典中打印公司id
行分隔符字符='-'
公司_数据={}
产品=‘汉堡’
以open('data.dat')作为行:
对于行中的行:
line=line.rstrip()
如果line.startswith(line\u separator\u char):
如果产品在公司_数据中:
打印(f'{company_data[“CompanyID”]}包含产品{product}')
公司_数据={}
其他:
键,值=行。拆分(“:”)
公司数据[键]=值
输出
TypeError: 'str' object is not an iterator
不,它不跑。你能解释一下“[1]在split()[1]附近是什么意思吗? 另一个不成功的尝试是 y=[] y=行[1]。拆分(“”)
谢谢你的回答。在我的案例中,最终起作用的是:
for line in lines:
y=line.split(' ')
if len(y[1])==10:
companyID=y[1]
if product in line:
x=True
companyID=next(行)
尝试使用next for lines
您的预期输出是什么不存在相同的问题我也尝试过它还有什么是产品定义在尝试查找产品时,我想知道公司id是什么。如果有公司id,我也会尝试知道是否有很多公司id要生产线。StartWith(“公司id”))如果相反,companyID想从希腊字符中输入字符串?对不起,我没有理解您的问题,我想说的是,如果函数startswith()的参数不是英语字符,该怎么办?word=“λόγος”;print(word.startswith(“λό”)
仍然打印True
,因为字符串确实以这些字符开头
000000000001 contains the product burger
for line in lines:
y=line.split(' ')
if len(y[1])==10:
companyID=y[1]
if product in line:
x=True
y=[]
y=line[1].split(' ')
a='-'
for line in lines:
if line.startswith("CompanyID:"):
y=line.split(' ')
companyID=y[1]
if product in line:
x=True