2017-11-18 2 views
0

파이썬을 사용하여 .txt 파일에 쉼표를 추가하고 싶습니다.파이썬을 사용하여 쉼표를 텍스트 파일에 삽입하십시오.

with open('filename.txt', 'r') as f: 
    fileText = f.read() 

filedata = fileText.split('\n') 

위의 코드는 파일을 읽고 줄 바꿈으로 분할합니다.

ABC name1, name2, name3 

XYZ nameA, [nameBa nameBb], nameC 

난 단지 첫 번째 문자열 뒤에 쉼표를 추가해야합니다

텍스트 파일은 다음과 같은 것입니다. 파일에 4 또는 5 개의 문자열이 포함되어 있습니다. 대부분은 쉼표로 구분됩니다.

두 개의 동일한 루프를 사용하여 루프를 작성했지만 파이썬을 사용하여 텍스트 파일에 쓰고 쉼표 만 삽입하면 하나의 루프 만 사용하면됩니다. 모든 문자열.

예상 결과 :

ABC, name1, name2, name3 

XYZ, nameA, [nameBa nameBb], nameC 

내가 키 (ABC, XYZ)로 첫 번째 문자열을 사용할 수있는 더 나은 및 중 하나 값 또는 만든 목록으로 나머지를 저장할 수 있습니다 list 구조 그러나 dict를 사용하고 있습니다 다른 모든 문자열의 최대.

텍스트 파일에 특정 위치 (예 : 모든 행의 왼쪽에서 네 번째 문자)에 쉼표를 삽입 할 수있는 사람이 있습니까? 당신은 구축 할 수

+0

당신은'filedata' 오른쪽 문자열 목록을? 왜이리스트를 돌면서 각 문자열을''문자로'split() '하지 않으면 해당 목록의 첫 번째 항목은'[ "ABC", "name1", ..]'이 될 것이고, join()'을 사용하여 필요한 항목을',' –

+0

고마워. 분리 기호로 각 문자열을 분할해도 (즉, [ "ABC", "name1", ..] 같은 결과를 얻지 못합니다. 대신 ABC name1, name2 .. – naveed

답변

0

는이 같은 dict는 :

d = {} 
with open('filename.txt', 'r') as f: 
    for line in f: 
     k, v = line.split(' ', 1) 
     d[k.strip()] = [s.strip() for s in v.split(',')] 
+0

감사합니다. 위의 코드를 사용하여, 첫 번째 문자열과 두 번째 즉 { 'ABC \ tname1': [name2 name3] 등을 포함한 dict 키를 얻습니다.} 간단한 루프를 사용하여 몇 줄을 추가로 코딩 했으므로 사전 (ABC) 키와 나는 각각의 줄에 레코드를 나눠 썼지 만 처음 두 번 울리는 것은 \ t로 구분하고 나머지는 쉼표로 구분하여 처리한다. – naveed

0
with open(file, 'r+') as file 

+r 라인에 추가됩니다. 이 질문에 체크 아웃은 기본적으로 같은 : Python insert characters into txt file without overwrite

+0

나는 r, a, w 등을 사용했지만 텍스트 파일에 정확한 위치에 들어가는 방법을 알아 내려고 노력하고 있습니다.각 줄의 4 번째 문자 다음에 쉼표를 추가하십시오. 그것이 바이트 위치일까요? – naveed

0

당신이 당신의 주요 목표는 말처럼

나도 값 또는 첫 번째 키와 같은 문자열 (ABC, XYZ) 및 저장 휴식을 사용할 수 있습니다 다른 모든 문자열로 구성된 목록입니다.

현재 정규식을 사용할 수 있습니다, 그리고 당신은 쉼표를 추가하지 않고 결과를 얻을 수 있습니다 :

import re 
pattern=r'(^\w+)\s.(\w.+)' 
final_dict={} 
with open('file.txt','r') as f: 
    for line in f: 
     match=re.finditer(pattern,line) 

     for find in match: 
      final_dict[find.group(1)]=[find.group(2)] 

print(final_dict) 

출력 :

{'XYZ': ['nameA, [nameBa nameBb], nameC'], 'ABC': ['name1, name2, name3']} 
+0

감사합니다. 어떤 이유로 '{'ameA, nameB '', 'ABC': [ 'ameD, nameE'] 등 {즉, 'XYZ'값에 원하지 않는 잘림이 생겼습니다. 패턴에서 벗어나지 않고 전체 값을 표시합니다. ta – naveed

+0

내 해결책은 당신이 대답을 받아 들일 수 있다면 도움이되지 않음 :) –

관련 문제