我想知道如何从每行的文件中删除一定数量的文本。
我想不出一种完成这项任务的方法。
878 57 2
882 63 1
887 62 1
1001 71 0
1041 79 1
1046 73 2
这是文本文件的样子,但我只想要左边的数字。我不能手动右边的2行,因为有超过16,000行。
左边的数字也会改变长度,所以我不能按长度读取它们。
我也不确定数字分隔的是什么字符,它可能是标签。
任何人对我的尝试都有任何想法吗?
如果您想查看文本文件,请访问:http://pastebin.com/xyaCsc6W
答案 0 :(得分:3)
var query = File.ReadLines("input.txt")
.Where(x => char.IsDigit(x.FirstOrDefault()))
.Select(x => string.Join("", x.TakeWhile(char.IsDigit)));
File.WriteAllLines("output.txt", query);
答案 1 :(得分:0)
string line;
using (var sr = new StreamReader(@"E:\test1.txt"))
{
using (var sw = new StreamWriter(@"E:\test1.tmp"))
{
while (!sr.EndOfStream)
{
line = sr.ReadLine();
line = Regex.Match(line, @"([\d]*)").Groups[1].Value;
sw.WriteLine(line);
}
}
}
File.Replace(@"E:\test1.tmp", @"E:\test1.txt", null);
答案 2 :(得分:0)
你可以这样做:
var col =
from s in File.ReadAllLines(input_file_name);
select s.Split(" ".ToCharArray())[0];
注意:在Split(“”)中,我有一个空格和制表符。
答案 3 :(得分:0)
你也可以这样做,它只会给你一个文本文件的左(列)字符(数字/字母数字)的结果列表:
var results = File.ReadAllLines("filename.txt")
.Select(line => line.Split('\t').First())
.ToList();
看起来文本文件由制表符分隔。
要将结果列表保存回文本文件,请另外添加以下内容:
File.WriteAllLines("results.txt", results.ToArray());
答案 4 :(得分:0)
StringBuilder sb = new StringBuilder();
//read the line by line of file.txt
using (StreamReader sr = new StreamReader("file.txt"))
{
String line;
// Read and display lines from the file until the end of
// the file is reached.
while ((line = sr.ReadLine()) != null)
{
//for each line identify the space
//cut the data from beginning of each line to where it finds space
string str = line.Substring(0, line.IndexOf(' '));
//Append each modifed line into string builder object
sb.AppendLine(str);
}
}
//Create temp newfile
using (File.Create("newfile.txt"))
{
//create newfile to store the modified data
}
//Add modified data into newfile
File.WriteAllText("newfile.txt",sb.ToString());
//Replace with new file
File.Replace("newfile.txt", "file.txt", null);