원하는 다른 길이의 하위 목록 요소를 추가하는 방법은 무엇입니까?

게르 케이스

하위 목록에 동일한 매개 변수 (키)의 값을 저장하여 사전에 저장하려는 아래와 같은 텍스트가 있습니다.

file = """./path/to/Inventory2020_1.txt
fileType                           = Inventory
StoreCode
    number:1145C
numId                              = 905895
ValuesOfProducts
    prodsTypeA:150
    prodsTypeB:189
    UpdateTime:2020-03-05 14:45:38
InventoryTime                         = 2020-03-05 14:45:29
userName
    number:123

./path/to/Inventory2020_2.txt   
fileType                           = Inventory
StoreCode
    number:7201B
numId                              = 54272
ValuesOfProducts
    prodsTypeA:75
    prodsTypeB:231
    UpdateTime:2020-03-06 09:12:22
InventoryTime                         = 2020-03-06 09:11:47
userName
    number:3901 
"""

내 현재 코드는 다음 줄을 사용하여 텍스트를 중첩 목록에 성공적으로 저장합니다.

import re

a = [ re.sub(r' += +', ':', line).replace(":", "=", 1).strip().split("=") for line in file.splitlines() ]

이제 매개 변수를 사용하여 사전에 저장하려면 keys다음과 같은 조건을 사용합니다.

d = dict()

for lst in a:
    if len(lst) > 1:
        d.setdefault(lst[0], []).append(lst[1])
    else:
        if "path" in lst[0]:
            d.setdefault("File", []).append(re.sub(r'.+/', '', lst[0]))

>>> d
{
'File': ['Inventory2020_1.txt', 'Inventory2020_2.txt'], 
'fileType': ['Inventory', 'Inventory'], 
'number': ['1145C', '123', '7201B', '3901'], 
'numId': ['905895', '54272'], 
'prodsTypeA': ['150', '75'], 
'prodsTypeB': ['189', '231'], 
'UpdateTime': ['2020-03-05 14:45:38 -05:00', '2020-03-06 09:12:22'], 
'InventoryTime': ['2020-03-05 14:45:29', '2020-03-06 09:11:47']
}
>>>

보시다시피 일부 매개 변수의 경우 관련 값 =은 같은 줄에서 부호로 구분되며 key, valuesplit ( "=")을 사용하여 동일한 하위 목록에 쌍을 직접 저장할 수 있습니다 . 그러나 내가 관심을 갖는 몇 가지 핵심 값은 다른 행에 있습니다. 예를 들면 다음과 같습니다.

StoreCode
    number:1145C
    

이 경우 key,pair필자가 관심 값이 key=StoreCodevalue=1145C

이 경우 :

ValuesOfProducts
    prodsTypeA:75
    prodsTypeB:231
    UpdateTime:2020-03-06 09:12:22

key,value내가 관여 하는 쌍은 다음과 같습니다.

  • key=prodsTypeAvalue=75
  • key=prodsTypeBvalue=231
  • key=UpdateTimevalue=2020-03-06 09:12:22

따라서 최종 사전은 다음 구조를 갖습니다.

{
'File': ['Inventory2020_1.txt', 'Inventory2020_2.txt'], 
'fileType': ['Inventory', 'Inventory'], 
'StoreCode': ['1145C', '7201B'], 
'numId': ['905895', '54272'], 
'prodsTypeA': ['150', '75'], 
'prodsTypeB': ['189', '231'], 
'UpdateTime': ['2020-03-05 14:45:38', '2020-03-06 09:12:22'], 
'InventoryTime': ['2020-03-05 14:45:29', '2020-03-06 09:11:47']
'userName': ['123', '3901']
}

주요 문제는 현재 출력에서 ​​매개 변수 StoreCodeuserName내가 관심있는 값이 word와 관련되어 있다는 것 number입니다. 그런 다음 혼합 된 값을 추가하고 실제로 관련된 일부 값 number은 key에 속 StoreCode하고 다른 값 number은 key에 속합니다 userName.

누군가가 내 예상 결과를 얻을 수 있도록 도와주세요. 미리 감사드립니다.

잭 플리 팅

이것은 정확히 지정한 방식은 아니지만 구조가 모든 측면에서 일정하다고 가정하면 정규식 사용을 피하는 다음 (또는 이와 유사한 것)이 아마도 작동 할 것입니다.

subfiles = file.split('./path/to/')
locs = [0,2,3,5,6,7,8,10]
vals = []
for s in subfiles[1:]:    
    target = s.strip().splitlines()[1:]
    row = [s.split('fileType')[0].strip()]
    for loc in locs:        
        if "=" in target[loc]:
            entry = target[loc].split('=', 1)[1].strip()     
        else:
            if ":" in target[loc]:
                entry = target[loc].split(':',1)[1].strip()
        row.append(entry)
    vals.append(row)

key_names =['File','fileType', 'StoreCodenumber','numId','ValueOfProdsTypeA','ValueOfProdsTypeB','ProdsUpdateTime','InventoryTime','userName']
d = {}
for k, v1, v2 in zip(key_names,vals[0],vals[1]):
    d[k] = [v1,v2]
d

산출:

{'File': ['Inventory2020_1.txt', 'Inventory2020_2.txt'],
 'fileType': ['Inventory', 'Inventory'],
 'StoreCodenumber': ['1145C', '7201B'],
 'numId': ['905895', '54272'],
 'ValueOfProdsTypeA': ['150', '75'],
 'ValueOfProdsTypeB': ['189', '231'],
 'ProdsUpdateTime': ['2020-03-05 14:45:38 -05:00', '2020-03-06 09:12:22'],
 'InventoryTime': ['2020-03-05 14:45:29', '2020-03-06 09:11:47'],
 'userName': ['123', '3901']}

분명히 실제 필요에 맞게 수정할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

스칼라의 다른 목록의 모든 요소 끝에 목록의 모든 요소를 추가하는 방법은 무엇입니까?

분류에서Dev

다른 목록 안에 목록에 요소를 추가하는 방법은 무엇입니까?

분류에서Dev

목록의 요소를 2 차원 배열에 추가하는 방법은 무엇입니까?

분류에서Dev

다른 클래스의 Tkinter 목록 상자에 데이터를 추가하는 방법은 무엇입니까?

분류에서Dev

파이썬 목록의 다른 행에서 객체를 추가하는 방법은 무엇입니까?

분류에서Dev

요소가 주변의 다른 요소를 인식 / 식별하도록하는 방법은 무엇입니까?

분류에서Dev

길이가 다른 목록을 압축하는 방법은 무엇입니까?

분류에서Dev

한 목록의 요소를 루프가있는 다른 목록의 요소와 동일하게 만드는 방법은 무엇입니까?

분류에서Dev

목록에서 정수 요소 범위를 추가하는 방법은 무엇입니까? 파이썬 3.3

분류에서Dev

목록의 요소를 다른 횟수로 복사하는 방법은 무엇입니까?

분류에서Dev

목록의 요소를 각각 다른 n 번과 Python으로 반복하는 방법은 무엇입니까?

분류에서Dev

길이가 다른 두 목록에 foreach를 사용하는 방법은 무엇입니까?

분류에서Dev

길이가 다른 String 배열의 요소를 비교하는 방법은 무엇입니까?

분류에서Dev

LINQ를 사용하여 다른 목록에 가장 많은 구성원이있는 목록의 모든 항목을 찾는 방법은 무엇입니까?

분류에서Dev

목록 내의 목록에 요소를 추가하는 방법은 무엇입니까?

분류에서Dev

각 항목이 다른 열의 요소 목록 인 열을 생성하는 방법은 무엇입니까?

분류에서Dev

한 목록의 요소 차이를 다른 목록의 요소로 나누는 방법은 무엇입니까?

분류에서Dev

목록에 요소를 추가하는 방법은 몇 개이며 가장 빠른 방법은 무엇입니까?

분류에서Dev

목록 목록의 요소에 다른 목록의 모든 요소가 포함되어 있는지 확인하는 방법은 무엇입니까?

분류에서Dev

Python 두 번째 목록의 길이가 채워질 때까지 다른 목록 콘텐츠에서 목록의 요소를 반복하는 방법은 무엇입니까?

분류에서Dev

동일한 요소를 포함하는 다른 목록에서 한 목록의 요소 색인을 찾는 방법은 무엇입니까?

분류에서Dev

목록 상자의 항목을 다른 목록 상자에 추가하는 방법은 무엇입니까?

분류에서Dev

for 루프를 사용하여 한 번에 하나씩 목록의 항목을 다른 목록에 추가하는 방법은 무엇입니까?

분류에서Dev

목록의 5 번째 (또는 n 번째) 요소를 모두 추가하는 방법은 무엇입니까?

분류에서Dev

목록 목록에서 다른 요소를 계산하는 방법은 무엇입니까?

분류에서Dev

목록에서 한 요소를 가져 와서 동일한 시리즈의 다른 요소와 비교하는 방법은 무엇입니까?

분류에서Dev

목록에 요소를 추가하는 방법은 무엇입니까?

분류에서Dev

Python 3 : 목록의 요소를 사전의 값으로 추가하는 방법은 무엇입니까?

분류에서Dev

onsen-ui의 다른 목록에 목록을 추가하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    스칼라의 다른 목록의 모든 요소 끝에 목록의 모든 요소를 추가하는 방법은 무엇입니까?

  2. 2

    다른 목록 안에 목록에 요소를 추가하는 방법은 무엇입니까?

  3. 3

    목록의 요소를 2 차원 배열에 추가하는 방법은 무엇입니까?

  4. 4

    다른 클래스의 Tkinter 목록 상자에 데이터를 추가하는 방법은 무엇입니까?

  5. 5

    파이썬 목록의 다른 행에서 객체를 추가하는 방법은 무엇입니까?

  6. 6

    요소가 주변의 다른 요소를 인식 / 식별하도록하는 방법은 무엇입니까?

  7. 7

    길이가 다른 목록을 압축하는 방법은 무엇입니까?

  8. 8

    한 목록의 요소를 루프가있는 다른 목록의 요소와 동일하게 만드는 방법은 무엇입니까?

  9. 9

    목록에서 정수 요소 범위를 추가하는 방법은 무엇입니까? 파이썬 3.3

  10. 10

    목록의 요소를 다른 횟수로 복사하는 방법은 무엇입니까?

  11. 11

    목록의 요소를 각각 다른 n 번과 Python으로 반복하는 방법은 무엇입니까?

  12. 12

    길이가 다른 두 목록에 foreach를 사용하는 방법은 무엇입니까?

  13. 13

    길이가 다른 String 배열의 요소를 비교하는 방법은 무엇입니까?

  14. 14

    LINQ를 사용하여 다른 목록에 가장 많은 구성원이있는 목록의 모든 항목을 찾는 방법은 무엇입니까?

  15. 15

    목록 내의 목록에 요소를 추가하는 방법은 무엇입니까?

  16. 16

    각 항목이 다른 열의 요소 목록 인 열을 생성하는 방법은 무엇입니까?

  17. 17

    한 목록의 요소 차이를 다른 목록의 요소로 나누는 방법은 무엇입니까?

  18. 18

    목록에 요소를 추가하는 방법은 몇 개이며 가장 빠른 방법은 무엇입니까?

  19. 19

    목록 목록의 요소에 다른 목록의 모든 요소가 포함되어 있는지 확인하는 방법은 무엇입니까?

  20. 20

    Python 두 번째 목록의 길이가 채워질 때까지 다른 목록 콘텐츠에서 목록의 요소를 반복하는 방법은 무엇입니까?

  21. 21

    동일한 요소를 포함하는 다른 목록에서 한 목록의 요소 색인을 찾는 방법은 무엇입니까?

  22. 22

    목록 상자의 항목을 다른 목록 상자에 추가하는 방법은 무엇입니까?

  23. 23

    for 루프를 사용하여 한 번에 하나씩 목록의 항목을 다른 목록에 추가하는 방법은 무엇입니까?

  24. 24

    목록의 5 번째 (또는 n 번째) 요소를 모두 추가하는 방법은 무엇입니까?

  25. 25

    목록 목록에서 다른 요소를 계산하는 방법은 무엇입니까?

  26. 26

    목록에서 한 요소를 가져 와서 동일한 시리즈의 다른 요소와 비교하는 방법은 무엇입니까?

  27. 27

    목록에 요소를 추가하는 방법은 무엇입니까?

  28. 28

    Python 3 : 목록의 요소를 사전의 값으로 추가하는 방법은 무엇입니까?

  29. 29

    onsen-ui의 다른 목록에 목록을 추가하는 방법은 무엇입니까?

뜨겁다태그

보관