2016-12-06 2 views
-1

Я нашел много ресурсов в Интернете для изменения строк и целых текстовых файлов, но ничего не дает результата, который я хочу.Как изменить содержимое строки, выбрав несколько строк?

Например, базовый текстовый файл может выглядеть следующим образом:

1             
Person One           
Company Name           
100 San Francisco Blvd, 000         
Dublin CA 94568         


2             
Person Two          
Company Name            
111 Grove St, 000         
Montreal CANADA 93940 

Это как файл придет в Я ищу это:.

2             
Person Two          
Company Name            
111 Grove St, 000         
Montreal CANADA 93940 

1             
Person One           
Company Name           
100 San Francisco Blvd, 000         
Dublin CA 94568    

Я попытался несколько решений в Интернете и то, что обычно заканчивается, является одним из следующих:

1) Текст отменен. Например, название компании становится emaN ynapmoC.

ИЛИ

2) Что-то подобное происходит:

Montreal CANADA 93940 
111 Grove St, 000 
Company Name 
Person Two 
2 

Вещи, которые даны столбцы длины (я всегда буду знать, сколько строк есть в поле адреса), я всегда буду знать сколько строк всего. Между каждой записью есть пробел.

Я пытаюсь понять, как взять файл filename.txt и перевернуть его в filename-reversed.txt.

TLDR: Я хочу взять х количество линий и отменить их, чтобы они не смешивались/перепутались.

+0

Итак, что вам нужно, чтобы создать массив записей из вашей строки, не так ли? и записи в этой строке разделяются разрывом двойной строки. – enkryptor

+0

Да, это именно так. Мне нужно уметь говорить, например, 7 строк и отменить его с помощью остальных 7 строк. Каждые 7 строк - одна запись. – rohanharrison

+0

Так в чем проблема? Алгоритм кажется очень простым. – enkryptor

ответ

3
var groups = Regex.Split(File.ReadAllText(filename), @"\r?\n\r?\n", RegexOptions.Singleline); 
var newtext = string.Join(Environment.NewLine+ Environment.NewLine, groups.Reverse()); 
File.WriteAllText(filename, newtext); 
+1

@ryanyuyu Он может выглядеть так вам, но нет .. он делает то, что ожидает OP :). –

+0

Не забудьте написать некоторое объяснение для кода? Или, может быть, даже демо-код? Регулярное регулярное выражение. – ryanyuyu

+0

О, я понял. Он пытается сопоставить буквенную строку новой строки, за которой следует другая новая строка (которая в записи отображается как пустая строка). Наверное, стоит это объяснить. – ryanyuyu

1

Вам необходимо разбить файл на «записи». Если у вас есть записи, а не только строки, это должно быть тривиальной задачей для изменения порядка.

Самый простой способ - разбить файл на строки на каждом разрыве строки. Вы можете загрузить эти строки N-строк в список. Затем просто перебирайте список в обратном порядке и записывайте записи в файл.

-2

в питоне:

blocks = [] 
with open(filename, "r") as f: 
    block = "" 
    for i, line in enumerate(f): 
     block += line 
     if i % block_line_size == 0: 
      blocks.append(block) 
      block = "" 
with open(new_file_name, "w") as f2: 
    for block in blocks[::-1]: 
     f2.write(block) 
+0

Вопрос помечен как 'C#' ** + ** этот ответ не возвращает выходные OP-расширения даже в * python * – EZI