먼저 아래 코드를 살펴보십시오.문자열 대체 메서드에 대한 다른 제안은 무엇입니까? Python
import string
DNA=["Alpha", "Bravo", "Charlie", "Delta", "Echo", "CharlieChoo", "DeltaAir", "Alpha bet", "ChooChoo", "Airline"]
body = "{\"startDate\":\"2016-01-01\"\
,\"endDate\":\"2017-10-30\"\
,\"timeUnit\":\"date\"\
,\"keywordGroups\":[{\"groupName\":\"Alpha\",\"keywords\":[\"Alpha\"]}\
,{\"groupName\":\"Bravo\",\"keywords\":[\"Bravo\"]}\
,{\"groupName\":\"Charlie\",\"keywords\":[\"Charlie\"]}\
,{\"groupName\":\"Delta\",\"keywords\":[\"Delta\"]}\
,{\"groupName\":\"Echo\",\"keywords\":[\"Echo\"]}]\
,\"device\":\"\",\"ages\":[\"1\",\"11\"],\"gender\":\"\"}"
body = body.replace(DNA[0],DNA[5],2)
body = body.replace(DNA[1],DNA[6],2)
body = body.replace(DNA[2],DNA[7],2)
body = body.replace(DNA[3],DNA[8],2)
body = body.replace(DNA[4],DNA[9],2)
body
는 출력이
'{"startDate":"2016-01-01","endDate":"2017-10-30","timeUnit":"date","keywordGroups":
[{"groupName":"Alpha betChoo","keywords":["Alpha betChoo"]},
{"groupName":"ChooChooAir","keywords":["ChooChooAir"]},
{"groupName":"Charlie","keywords":["Charlie"]},
{"groupName":"Delta","keywords":["Delta"]},
{"groupName":"Airline","keywords":["Airline"]}],"device":"","ages":
["1","11"],"gender":""}'
내 의도 된 출력 그래서 기본적으로
#body = "{\"startDate\":\"2016-01-01\"\
#,\"endDate\":\"2017-10-30\"\
#,\"timeUnit\":\"date\"\
#,\"keywordGroups\":[{\"groupName\":\"CharlieChoo\",\"keywords\":[\"CharlieChoo\"]}\
#,{\"groupName\":\"DeltaAir\",\"keywords\":[\"DeltaAir\"]}\
#,{\"groupName\":\"Alpha bet\",\"keywords\":[\"Alpha bet\"]}\
#,{\"groupName\":\"ChooChoo\",\"keywords\":[\"ChooChoo\"]}\
#,{\"groupName\":\"Airline\",\"keywords\":[\"Airline\"]}]\
#,\"device\":\"\",\"ages\":[\"1\",\"11\"],\"gender\":\"\"}"
아래 아래 내가 DNA 목록에서 groupName을 키워드를 교체하려고했던 것입니다. 이 예제에서는 DNA 목록에 10 obj 만 있지만 실제 프로젝트에는 몇 천 개가 포함되어 있습니다.
개인적인 생각은 문자열이 겹칠 가능성이 있으므로 문자열을 대체하는 것이 적절하지 않다는 것입니다. 내 작업을 수행하는 다른 방법이 있습니까? 한가지 고려해야 할 것은 출력을 동일한 유형의 첫 번째 본문 문자열 (단어 만 변경됨)로 사용해야한다는 것입니다. 미리 감사드립니다.
-------------------------------------- EDIT --- -------------------------------------------------- ----------
@ AJAX1234 답변에 대한 새 오류가 발생했습니다.
import pandas as pd
import json
#reading xlsx file
ex = pd.ExcelFile('mat_hierarchy.xlsx').parse('Sheet1')
DNA = ex.loc[:,'4Level']
DNA
이 위 내 DNA 파일이며, 아래에이 정보를 사용하여 출력
0 Fruit
1 MixFruit
2 SuperFruit
3 PassionFruit
4 Orange
5 Lemon
6 Mango
................. it goes on forever :(
, 난 오류가 계속 표시입니다 "이름 a가 정의되지 않은"당신의 코드를 실행. 나는 초보자지만 내 최고의 추측은 "DNA"가 색인 (DNA.index [0] 등)으로 정의되어 있고 코드로 "a"를 숫자로 변경했으며 여전히 작동하지 않는다는 것입니다.
이 문제와 관련된 제안 사항이 있습니까? 입력 해 주셔서 감사합니다.
------------------------ 편집 2 -------------------- -----------
body_intro = "{\"startDate\":\"2016-01-01\",\"endDate\":\"2017-10-30\",\"timeUnit\":\"date\",\"keywordGroups\":[{\"groupName\":\""
body_keywords = "\",\"keywords\":[\""
body_groupName = "\"]},{\"groupName\":\""
body_last = "\"]}],\"device\":\"\",\"ages\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\"],\"gender\":\"f\"}"
for i in range(0,len(DNA),5):
if((len(DNA)%5==0) or (i < (len(DNA)-(len(DNA)%5)))):
body = body_intro + DNA[i] + body_keywords + DNA[i] + body_groupName + DNA[i+1] + body_keywords + DNA[i+1] + body_groupName + DNA[i+2] + body_keywords + DNA[i+2] + body_groupName + DNA[i+3] + body_keywords + DNA[i+3] + body_groupName + DNA[i+4] + body_keywords + DNA[i+4] + body_last
elif(len(DNA)%5==4):
body = body_intro + DNA[i] + body_keywords + DNA[i] + body_groupName + DNA[i+1] + body_keywords + DNA[i+1] + body_groupName + DNA[i+2] + body_keywords + DNA[i+2] + body_groupName + DNA[i+3] + body_keywords + DNA[i+3] + body_last
elif(len(DNA)%5==3):
body = body_intro + DNA[i] + body_keywords + DNA[i] + body_groupName + DNA[i+1] + body_keywords + DNA[i+1] + body_groupName + DNA[i+2] + body_keywords + DNA[i+2] + body_last
elif(len(DNA)%5==2):
body = body_intro + DNA[i] + body_keywords + DNA[i] + body_groupName + DNA[i+1] + body_keywords + DNA[i+1] + body_last
else:
body = body_intro + DNA[i] + body_keywords + DNA[i] + body_last
개인적으로 [이 답변] (https://stackoverflow.com/a/6117124/2364363)과 같이 개인적으로는 정규 표현식을 사용하여 대체 할 수 있습니다. – uber5001
DNA 목록에 [ 't1', 't2', 't3', 't4', 't5', 't6', 't7', 's1', 's2', 's3' , 's4', 's5', 's6', 's7']? 키워드 t의 수는 s의 수와 같습니다. 그렇다면 아래 나의 대답을 시도하십시오. – chx3