Python 如何使用字符串访问变量?

Python 如何使用字符串访问变量?,python,Python,我在访问具有两个条件的多个列表时遇到问题:Case\u Num和Case\u Type。我不知道如何修复连接字符串和列表对象的错误 我尝试过使用循环、组合字符串和常规整数值。不幸的是,我一直遇到同样的错误。任何帮助都将被告知 _2019_case_1=[] _2019_case_2=[] _2019_case_3=[] Case_Num=[2019,2019,2019,2020,2020,2020,2024,2024,2024,2029,2029,2029] Case_Type=[1,2

我在访问具有两个条件的多个列表时遇到问题:
Case\u Num
Case\u Type
。我不知道如何修复连接字符串和列表对象的错误

我尝试过使用循环、组合字符串和常规整数值。不幸的是,我一直遇到同样的错误。任何帮助都将被告知

_2019_case_1=[]

_2019_case_2=[]

_2019_case_3=[]


Case_Num=[2019,2019,2019,2020,2020,2020,2024,2024,2024,2029,2029,2029]
Case_Type=[1,2,3,1,2,3,1,2,3,1,2,3]

dr = "F:\C\FE\CD\Tran\ctg"
read_files =[] 
for root, _, files in os.walk(dr):
    read_files_2="_"+Case_Num+"_case_"+Case_Type 
    for file in files:
        if file in read_files_2:
            read_files.append(os.path.join(root, file))


您需要更改
将读取文件分配给集合的行。最好只做一次,所以在循环之前分配它。如评论中所述,您可以使用
itertools.product
进行易于扩展的更改

from itertools import product

_2019_case_1=[]

_2019_case_2=[]

_2019_case_3=[]

dr = "F:\C\FE\CD\Tran\ctg"
read_files =[] 
read_files_2= {f"_{num}_case_{type}" for num, type in product((2019,2020,2024,2029), (1,2,3))}
for root, _, files in os.walk(dr): 
    for file in files:
        if file in read_files_2:
            read_files.append(os.path.join(root, file))

Case\u Num
Case\u Type
是列表。通过将它们添加到
str
,您希望发生什么?使用字典而不是在变量名中编码信息→
read_files_2=cases[(n,t)]
其中
n
Case_Num
s中的一个,而
t
Case_Type
s中的一个。您还应该固定间距。逗号后应留有空格,运算符前后应留有空格(如
+
)。我读这个问题的时间越长,就越不了解你想做什么。。。请澄清。您可以在
[2019202024229]
[1,2,3]
上使用
itertools.product
,使其更简短易读(并且易于扩展到更多num和类型)
{f{num}{case{type}对于num,键入产品((2019202020242029),(1,2,3))}
我得到了一个带有引号的语法错误@Jabi没有Python 3.6只需使用字符串连接,就像在你的问题中或str.format
read\u files\u 2={{uU{num}\u case\uU{type}。format(num,type)for num,type in product((2019202020242029),(1,2,3))
我尝试了这个方法,但是我得到了一个
keyrorm:'num'
from itertools import product

_2019_case_1=[]

_2019_case_2=[]

_2019_case_3=[]

dr = "F:\C\FE\CD\Tran\ctg"
read_files =[] 
read_files_2= {f"_{num}_case_{type}" for num, type in product((2019,2020,2024,2029), (1,2,3))}
for root, _, files in os.walk(dr): 
    for file in files:
        if file in read_files_2:
            read_files.append(os.path.join(root, file))