我在网上发现了许多用于反转字符串和整个文本文件的资源,但没有任何结果可以产生我想要的结果。
例如,基本文本文件可能如下所示:
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。
OR
2)发生类似这样的事情:
Montreal CANADA 93940
111 Grove St, 000
Company Name
Person Two
2
给出的是列长度(我将始终知道地址字段中有多少行),我将始终知道总共有多少行。每条记录之间都有一个空白行。
我试图找出如何取出filename.txt并将其翻译成filename-reversed.txt。
TLDR:我想采用x行数并反转它们,以免混淆/混乱。
答案 0 :(得分: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 :(得分:1)
您需要将文件分成"记录"。一旦你有记录而不仅仅是行,反转顺序应该是一项微不足道的任务。
最简单的方法是在每个第N个换行符中将文件分成字符串。您可以将这些N行字符串加载到列表中。然后只需反向循环遍历列表并将记录转储到文件中。
答案 2 :(得分:-2)
在python中:
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)