Python Can';t将列表中的长字符串与列表中的短字符串连接起来

Python Can';t将列表中的长字符串与列表中的短字符串连接起来,python,string,list,slice,long-integer,Python,String,List,Slice,Long Integer,为了从日志文件中提取硬盘信息,我编写了一个Python脚本。 我正在使用的日志文件格式不正确。 因此,我将搜索所有值,如下所示: lineDict = dict([(line) for line in enumerate(hd.readlines())]) x = json.dumps(lineDict, indent = 1) y = re.findall(r'Caption=.*[c-zC-Z]:|FileSystem=NTFS|Size=\d+|FreeSpace=\d+',x,re.M)

为了从日志文件中提取硬盘信息,我编写了一个Python脚本。 我正在使用的日志文件格式不正确。 因此,我将搜索所有值,如下所示:

lineDict = dict([(line) for line in enumerate(hd.readlines())])
x = json.dumps(lineDict, indent = 1)
y = re.findall(r'Caption=.*[c-zC-Z]:|FileSystem=NTFS|Size=\d+|FreeSpace=\d+',x,re.M)
我所有的可用空间和大小(总大小)值都是字节,因此我必须循环遍历它们,将它们与其他值分开,以便快速将它们转换为int,然后将这些字节值转换为人类可读的形式。(MB、GB等) 为了在屏幕上很好地显示输出,我对这些可用空间和总大小值进行了处理,并使用管道分隔符表示总大小和可用空间:

getBytes = re.findall(r'\d+',cropHdds)
getBytes = [int(x) for x in getBytes]
valsL = []
for vals in getBytes:
    hVals = convertBytes(vals)
    valsL.append(hVals)
    hrFixed = json.dumps(valsL, indent = 2)
    hrDisplay = replaceMany(hrFixed.strip(),[("\n",""),('"',''),("'",""),(']',''),('[','')])
    a = re.sub("\\s+", "", hrDisplay)
    b = textwrap.fill(a, 14)
    c = b.replace(","," | ")
    hrValsF = c.center(60)
最后,我有两个清单: 胡说八道:

DriveInfoL:

['52.7GB | 119.7GB', '22.9GB | 80.0GB', '25.2GB | 50.0GB']
我希望将这些值组合在一起,如下例所示:

C:,52.7GB | 119.7GB, D: 22.9GB | 80.0GB, E:'25.2GB | 50.0GB
我有另一个变量搜索“文件系统类型”,我可以知道我只有3个NTFS硬盘驱动器(C、D、E)。 在键盘上搜索和敲击我的头很长一段时间后。 我尝试了许多排序方法,例如使用奇怪的列表理解将这些字符串转换为元组或dict,最终导致内存泄漏,还尝试了一些创造性的切片表示法,不知何故我无法正确使用,因此我寻求帮助以克服这一障碍,我有一种感觉,我工作得太努力了,他们一定是解决办法。
提前感谢您的帮助。

您可以使用列表理解同时浏览两个列表

DriveL=['C:', 'D:', 'E:', 'F:', 'G:', 'Z:']
DriveInfoL=['52.7GB | 119.7GB', '22.9GB | 80.0GB', '25.2GB | 50.0GB']
Combined=[(x,y) for (x,y) in zip(DriveL,DriveInfoL)]

>>>Combined
>>>[('C:', '52.7GB | 119.7GB'),
('D:', '22.9GB | 80.0GB'),
('E:', '25.2GB | 50.0GB')]

此代码段将创建一个字典,其中键是驱动器号,值是内存:

DriveL = ['C:', 'D:', 'E:', 'F:', 'G:', 'Z:']
DriveInfoL = ['52.7GB | 119.7GB', '22.9GB | 80.0GB', '25.2GB | 50.0GB']
Drive_dict = {}
for i in range(3):
  Drive_dict[DriveL[i]] = DriveInfoL[i]

仅考虑前3个条目。如果您只想使用NTFS驱动器,您必须找到一种方法来确定
驱动器中的哪些条目是NTFS驱动器。

您可以在for循环中串联这两个值,结果应该是什么类型?一串词典列表名单?非常感谢!这两种解决方案都很有用,但是通过这个代码片段,我可以根据我的“NTFS”计数轻松地修改范围值,以过滤所有不必要的值以获得所需的输出结果。
DriveL = ['C:', 'D:', 'E:', 'F:', 'G:', 'Z:']
DriveInfoL = ['52.7GB | 119.7GB', '22.9GB | 80.0GB', '25.2GB | 50.0GB']
Drive_dict = {}
for i in range(3):
  Drive_dict[DriveL[i]] = DriveInfoL[i]