2017-11-11 146 views
3

我从文件“rawCorpus.txt”中读取,文本应该被拆分。如果在阅读过程中发现一个“。”,它应该在文本中添加一个换行符并将其写回文件。我试过这个代码,但仍然有问题。在文本文件中找到一个点并在Python中为该文件添加换行符?

inp = open('rawCorpus.txt', 'r') 
out = open("testFile.text", "w") 

for line in iter(inp): 
    l = line.split() 
    if l.endswith(".") 
     out.write("\n") 
    s = '\n'.join(l) 
print(s) 
out.write(str(s)) 
inp.close() 
out.close() 
+2

什么问题? –

+0

如果发现“。”,我正在阅读文件。或句子结尾时,应该添加一个换行符,然后继续拆分。 –

+0

你的文本文件很大?或不? – DRPK

回答

0

这是我自己的解决方案,但我仍然后多了一个换行符希望“”,这种解决方案不这样做 read_lines = [line.rstrip(‘\ n’)在开线('rawCorpus .txt')] words = []

my_save_data = open("my_saved_data.txt", "w") 

    for lines in read_lines: 

    words.append(lines) 


for word in words: 
    w = word.rstrip().replace('.', '\n.') 
    w = w.split() 
    my_save_data.write(str("\n".join(w))) 
    print("\n".join(w)) 

my_save_data.close() 
+0

“但是我仍然需要在”。“之后多加一个换行符。”“...所以...您可以使用两个”\ n“字符...比如”\ n \ n“您尝试过吗? – DRPK

0

您与s = '\n'.join(l)覆盖串s在每一个循环。

s = ''分配为for循环前的空字符串,并在每个循环中添加新行,例如,与s += '\n'.join(l)(的s = s + '\n'.join(l)

短版这应该工作:

inp = open('rawCorpus.txt', 'r') 
out = open('testFile.text', 'w') 

s = '' # empty string 

for line in iter(inp): 
    l = line.split('.') 
    s += '\n'.join(l) # add new lines to s 

print(s) 
out.write(str(s)) 

inp.close() 
out.close() 
+0

谢谢,我不知道这一点,但我的问题是如果在阅读过程中罚款“。”,它应该添加一个换行符。 –

+0

用'\ n'代替'.',因为这条线在'.'处被分开,并且这些部分再次与'\ n'连接。 – bastelflp

+0

对不起,您的解决方案是覆盖文件。我测试过 –

4

试试这个(正常方式):

with open("rawCorpus.txt", 'r') as read_file: 
    raw_data = read_file.readlines() 


my_save_data = open("testFile.text", "a") 

for lines in raw_data: 

    if "." in lines: 

     re_lines = lines.replace(".", ".\r\n") 
     my_save_data.write(re_lines) 

    else: 
     my_save_data.write(lines + "\n") 

my_save_data.close() 

如果你的文本文件不是很大,你可以试试这个太:

with open("rawCorpus.txt", 'r') as read_file: 
    raw_data = read_file.read() 

re_data = raw_data.replace(".", ".\n") 

with open("testFile.text", "w") as save_data: 
    save_data.write(re_data) 

UPDATE(输出新行也取决于您的文本查看器!因为在某些文本编辑器中,“\ n”是一个新行,但在其他一些文件中,“\ r \ n”是一个新行。 ):

输入样本:

这是一本书。我喜欢它。

这是一个苹果。我喜欢它。

这是一台笔记本电脑。我喜欢它。

这是一支笔。我喜欢它。

这是一个手机。我喜欢它。

代码:

last_buffer = [] 
read_lines = [line.rstrip('\n') for line in open('input.txt')] 

my_save_data = open("output.txt", "a") 


for lines in read_lines: 

    re_make_lines = lines.split(".") 

    for items in re_make_lines: 

     if items.replace(" ", "") == "": 
      pass 

     else: 

      result = items.strip() + ".\r\n" 
      my_save_data.write(result) 

my_save_data.close() 

输出继电器将是:

这是一本书。

我喜欢它。

这是一个苹果。

我喜欢它。

这是一台笔记本电脑。

我喜欢它。

这是一支笔。

我喜欢它。

这是一个手机。

我喜欢它。

+1

@The阿富汗:试试这个... – DRPK

+0

谢谢你的解决方案,但现在它不会逐行分割单词。我的帖子是行分裂的话,即使在我的解决方案,我添加了拆分(“\ n”)。 –

+1

@TheAfghan:所以... plz在你的问题中写下你的IO样本,我会检查它。 – DRPK

相关问题