2013-10-26 3 views
-1

각 줄마다 하나의 목록이 포함되어 있으며 각 목록에는 하이픈 넣기 후에 한 단어의 문장이 들어 있습니다. 이제Python : 새로운 파일의 한 줄에 다양한 수의 목록을 쓰는 방법

['I'] 
['am'] 
['a'] 
['man.'] 
['I'] 
['would'] 
['like'] 
['to'] 
['find'] 
['a'] 
['so','lu','tion.'] 
(let's say it's hyphenated like this, I'm not a native English speaker) 

etc. 

가, 내가 뭘하려는 것은 새로운 .txt 파일이 출력을 쓰기이지만, 각 문장은 (목록의 항목이 점을 포함 할 때 문장 끝)에 있습니다 그것은 다음과 같이 보입니다 개행 문자에 쓰여진다. 나는이 .txt 파일에 기록 된 결과 다음이하고 싶은 것은 :

with open('file.txt','r') as f: 
    for line in f: 
     for word in line.split(): 
      if h_en.syllables(word)!=[]: 
       h_en.syllables (word) 
      else: 
       print ([word]) 

내가 원하는 결과는 문장이 들어있는 파일입니다 :

I am a man. 
I would like to find a so,lu,tion. 
etc. 

이 모든 선행 코딩은 다음과 같다 각 줄마다. 문장의 각 단어는 하이픈이 찍힌 버전으로 표시됩니다.

제안 사항?

고맙습니다.

def write_sentences(filename, *word_lists): 
    with open(filename, "w") as f: 
    sentence = [] 
    for word_list in word_lists: 
     word = ",".join(word_list) ##last edit 
     sentence.append(word) 
     if word.endswith("."): 
     f.write(" ".join(sentence)) 
     f.write("\n") 
     sentence = [] 

피드 출력 파일 이름과 write_sentences 기능, 워드 인수로 목록의 각이 같은 기본

+6

출력을 생성하는 프로그램을 표시하십시오. – thefourtheye

+0

: 안녕하세요. 그것은 파이썬 3입니다. – KnRm

+0

질문에서 언급 한 결과물을 생성하는 실제 파이썬 프로그램. 우리에게 그 사실을 보여줄 수 있다면 아마 그 문제를 해결할 수있을 것입니다. – thefourtheye

답변

2

무언가가 당신의 필요에 응답 할 것 같다. 단어 목록 (예 : [['I'], ['am'], ...])의 목록이있는 경우 을 호출하여 모든 것을 전달할 때 *을 사용할 수 있습니다.

편집는 : 그것은

+0

, 나는 코드 조금 적응 \t 문장 = [] word_lists word_list에 대한 \t \t : \t \t \t X = (LEN (word_list) -len (word_list)) \t \t \t Y = (LEN (word_list) -1) \t \t \t 워드 = 단어 목록 [x : y] \t \t \t 문장.추가 (단어)의 경우 \t \t \t 단어 (".") : \t \t \t \t f.write ("".join (문장)) \t \t \t \t f.write ("\ n")를 \t \t \t \t 문장 = []' 그러나 필자가 write_sentences 함수에 필요한 사양을 제공하면 아무 것도 파일에 쓰여지지 않습니다. 내가 간과하니? – KnRm

+0

질문에 대한 마지막 예를 돕기 위해 답을 편집했습니다. 도움이 되나요? – mguijarr

0
words = [['I'],['am'],['a'],['man.'],['I'],['would'],['like'],['to'],['find'],['a'],['so','lu','tion.']] 

text = "".join(
    "".join(item) + ("\n" if item[-1].endswith(".") else " ") 
     for item in words) 

with open("out.txt", "wt") as f: 
    f.write(text) 
1

이 짧은 정규식이 여러 줄 모드에서 컴파일 할 때 당신이 원하는 것을 (단어 목록에서 여러 단어로) 대답의 최신 편집과 함께 작동하도록 변경 :

>>> regex = re.compile("\[([a-zA-Z\s]*\.?)\]$",re.MULTILINE)` 
>>> a = regex.findall(string) 
>>> a 
[u'I', u'am', u'a man.', u'I', u'would like', u'to find', u'a solution.'] 

이제 원하는 결과를 얻을 때까지 목록을 조작하십시오. 예를 들면 다음과 같습니다.

>>> b = ' '.join(a) 
>>> b 
'I am a real man. I want a solution.' 
>>> c = re.sub('\.','.\n',b) 
>>> print(c) 
'I am a real man.' 
' I want a solution.' 
>>> with open("result.txt", "wt") as f: 
     f.write(c) 
관련 문제