2015-01-28 2 views
-1

문자 사이의 공백을 텍스트 파일에서 제거하고 다른 텍스트 파일에 쓰려고합니다. 이이 단어하지만 그것은 결과를 생성하지 않는 내 코드유니 코드 문자 사이의 공백 제거

f = open("/home/user1/Desktop/evaluation/gold", "r") 
f2 = open("gold1.txt","a") 
string =f.read().split() 
s=str(string) 
string2 = " ".join(s.split()) 

f2.write(str(string2) +"\n") 
f.close() 
f2.close() 

입니다.

matsya k kuññuṅṅaḷa ̔e 
ora kkara 
vistr̥ti yila ̔uḷḷa 
naḻ saṟi kuḷa ttila 
vaḷara ttu ṁ 
kuḷa ttinu 
cuṟṟu ṁ 
plāsṟṟa ̔ik c valaya ̔iṭṭa 
nra kkēāla ̔i yu ṁ 
āma yu ṁ 
kayaṟi 
matsya k kuññuṅṅaḷa ̔e 
tinnunna 
sāhacarya meāḻivā kkunnu 
ta viṭa 
piṇṇākka 
kappa 
bis c kaṟṟa 
peāṭi ccata 
ennivaya ̔eākke yāṇa 
naḻ c sa ṟi 
kuḷa ṅṅaḷila ̔e 

예상 결과는 밖으로 공간

matsyakkuññuṅṅaḷae 
orakkara 
vistr̥tiyila uḷḷa 
naḻsaṟikuḷattila 
vaḷarattuṁ 
kuḷa ttinu 
cuṟṟu 
+0

'f' 파일 객체의 의미는 무엇입니까? – ZdaR

+0

텍스트 파일을 읽기위한 것임 – Karun

+1

이 파이썬 3인가? 왜'f.read(). split()'에 의해 생성 된 단어의 * list *에'str()'을 사용 했습니까? –

답변

1

당신이 한 번에 전체 파일을 읽지 않는다, 라인 당 공간 을 제거하고 싶었다면과 그 단어 단어입니다. 대신 라인하여 파일 라인을 처리하고, 당신이 정말로 모든 공백 제거하기를 원한다면 당신의 분할 결과를 결합하기 위하여 문자열을 사용해야합니다 : 당신은 몇 가지 실수를

with open("/home/user1/Desktop/evaluation/gold", "r") as inf, \ 
     open("gold1.txt","a") as outf: 
    for line in inf: 
     line = ''.join(line.split()) 
     outf.write(line + "\n") 

: 당신이 전체 파일을 읽기 한 번 이동 한 다음 파일 내용을 f.read().split(); 또한 모든 줄 바꿈을 제거했습니다. 그런 다음 목록str()으로 다시 문자열로 변환하여 내용이 하나의 문자열 인 목록의 파이썬 표현을 생성합니다. 그런 다음 출력 파일에 쓰기 전에 다른 공간에 해당 문자열의 모든 공백을 대체 :

>>> from io import StringIO 
>>> for line in StringIO(sample): 
...  line = ''.join(line.split()) 
...  print(line) 
... 
matsyakkuññuṅṅaḷa̔e 
orakkara 
: 파일 개체 위에 반복하여

>>> sample = '''\ 
... matsya k kuññuṅṅaḷa ̔e 
... ora kkara 
... ''' 
>>> sample 
'matsya k kuññuṅṅaḷa ̔e \nora kkara\n' 
>>> sample.split() 
['matsya', 'k', 'kuññuṅṅaḷa', '̔e', 'ora', 'kkara'] 
>>> str(sample.split()) 
"['matsya', 'k', 'kuññuṅṅaḷa', '̔e', 'ora', 'kkara']" 
>>> str(sample.split()).split() 
["['matsya',", "'k',", "'kuññuṅṅaḷa',", "'̔e',", "'ora',", "'kkara']"] 
>>> ' '.join(str(sample.split()).split()) 
"['matsya', 'k', 'kuññuṅṅaḷa', '̔e', 'ora', 'kkara']" 

당신은 줄 바꿈을 보존 할 수 있도록하는 대신 별도의 라인을 얻을

+0

아니요 작동하지 않습니다. – Karun

+0

@ 카룬 : 당신이 얻은 실제 결과를 보여주지 못했습니다. 예를 들어 파일을 여는 데 잘못된 코덱을 사용하고있는 것일 수 있습니다. 그러나 당신이 우리에게 * 실제로 당신 자신을 가지고 있다는 것을 보여주지 않는 한, 나는 그런 문제를 진단 할 수 없다. –

+0

그래, 고마워. 샘플은 무엇입니까 – Karun