Multi-line 转换为字典的字符串有 \r\n 附加到字典中的键,如何去除 \r\n?

Multi-line string on converting to dictionary has \r\n appended to key in dictionary, how to strip \r\n?

下面是用于将 multi-line 字符串转换为字典的代码。

data = []
header = "Header: JAVA\
          Length: 0xa\
          Revision: 0x0"
for value in header.split(', '):
    if ':' in value:
        data.append(map(str.strip, value.split(':', 1)))

获取输出为:{Header: JAVA \r\n长度:0xa \r\n修订:0x0 ....}

如何去除这些 \r\n 并获得类似 {Header: JAVA Length: 0xa Revision: 0x0 ....}

的输出

我看到您将数据初始化为列表,而您的输出有 {},这是一个字典。因此,我已将您的数据从列表更改为字典。此外,您应该从“\n”而不是“,”拆分。以下是我的解决方案:

data = {}
header = "Header: JAVA\r\nLength: 0xa\r\nRevision: 0x0"
for line in header.split("\n"):
    if len(line) > 0 and len(line.split(":")) > 1:
        key, value = line.split(":")
        key = key.strip()
        value = value.strip()
        data[key] = value

print(data) # for visualization

这是输出:

$ python test.py                                   
{'Header': 'JAVA', 'Length': '0xa', 'Revision': '0x0'}  

使用 splitlinesre.split 你可以简化这个,特别是当与列表理解结合时。

header = """Header: JAVA
          Length: 0xa
          Revision: 0x0"""

data = [[part.strip() for part in re.split(r'\s*\:\s*', line, 1)] 
          for line in header.splitlines()  
          if ':' in line]