2016-12-20 5 views
-3

Не имея ноу-хау, чтобы прочитать данные, которые подают в текстовый файл, вот то, что я до сих порЧтение конкретных данных из текстового файла C#

try 
{ 

    StreamReader sr = new StreamReader(@"C:\\Program Files (x86)\\Python Data\\Rolldata.txt"); 

    line = sr.ReadLine(); 
    while (line != null) 
    { 
     Console.WriteLine(line); 
     textBox1.Text = line; 
     line = sr.ReadLine(); 
    } 

    sr.Close(); 
    Console.ReadLine(); 

} 

Это просто извлекает данные и положить его чтобы я мог физически видеть это, но как я могу анализировать данные таким образом, чтобы конкретные пары данных, такие как {id: 1} или {foobar:foobar}, могли быть прочитаны только с их конкретными прикрепленными данными?

В связи с запросами, я остановлюсь и показать данные

{'updated_at': None, 'roll': 3, 'hash': 'f114b7a0fd714256015b5a420ebe974f3977c53d3a3423f8532b58b69a6f3aa5', 'state': 3, 'created_at': None, 'id': 9947837}{'updated_at': None, 'roll': 9, 'hash': '4e2a94657c9ca2c9206369d64fb84b03520875f870389bee1604fa4f74ef0cfa', 'state': 3, 'created_at': None, 'id': 9947838}{'updated_at': None, 'roll': 0, 'hash': 'd5dc5c3378724deb071ae6bdaa0cfb05222db68e4afc441d9138f0e84609fc4c', 'state': 3, 'created_at': None, 'id': 9947839} 

Я хочу, чтобы извлечь идентификатор и рулон и соединить их вместе, если это возможно

+0

Прочитайте файл в 'string', затем' String.Split' или 'Regex'. –

+0

Вам нужно показать нам данные, если вы ожидаете, что мы расскажем вам, как их разобрать. '@" C: \\ Program Files (x86) \\ Python Data \\ Rolldata.txt' неверно, это должно быть либо '' C: \\ Program Files (x86) \\ Python Data \\ Rolldata.txt' или '@" C: \ Program Files (x86) \ Python Data \ Rolldata.txt'. Кроме того, почему ваши данные находятся в пути 'C: \ Program Files (x86) \? Надеюсь, вы не думаете, что пользователи обычно можно написать там. –

+0

С технической точки зрения, вы уже успели прочитать данные. Я думаю, что вы спрашиваете: «Как создать представление данных в переменных C#», например, создать коллекцию структур или классов, соответствующих к данным в файле. Ответ, конечно, зависит от того, как вы хотите представить данные и как вы собираетесь их использовать, которые вы не указали. –

ответ

0

Я нахожу это удобно с File.ReadAllText как

string YourTextFileContent = File.ReadAllText(@"C:\\Program Files (x86)\\Python Data\\Rolldata.txt"); 
Console.WriteLine(YourTextFileContent); 

и вы можете размещать содержимое файла и ожидаемый результат для считывания данных парами. В то время как Split, Regex помогут вам прочитать такие данные, но я думаю, что ваша строка может быть строкой JSON, и, следовательно, это может быть гораздо более простой способ получить данные.

0

Ваши данные выглядят как json-формат, но с некоторой проблемой синтаксиса.

Итак, сначала я предлагаю вам реф http://www.json.org/ и исправить свои данные, чтобы быть как

[ 
    { 
     'updated_at': '2016-12-20', 
     'roll': 3, 
     'hash': 'f114b7a0fd714256015b5a420ebe974f3977c53d3a3423f8532b58b69a6f3aa5', 
     'state': 3, 
     'created_at': '2016-12-20', 
     'id': 9947837 
    }, 
    { 
     'updated_at': '2016-12-20', 
     'roll': 9, 
     'hash': '4e2a94657c9ca2c9206369d64fb84b03520875f870389bee1604fa4f74ef0cfa', 
     'state': 3, 
     'created_at': '2016-12-20', 
     'id': 9947838 
    }, 
    { 
     'updated_at': '2016-12-20', 
     'roll': 0, 
     'hash': 'd5dc5c3378724deb071ae6bdaa0cfb05222db68e4afc441d9138f0e84609fc4c', 
     'state': 3, 
     'created_at': '2016-12-20', 
     'id': 9947839 
    } 
] 

Во-вторых, создать класс C# для JSON

public class PropertiesYouWant 
{ 
    public int roll { get; set; } 
    public int id { get; set; } 
} 

Наконец, используйте Newtonsoft.Json десериализовать json, как указано ниже

var result = JsonConvert.DeserializeObject<List<PropertiesYouWant>>(@"json above"); 

Resul t должна быть нужной вам коллекцией.

+0

Когда вы используете @ "json above", что мне делать, если я импортирую данные из внешнего источника, такого как текстовый файл? –

+0

В этом случае сначала прочитайте строку и выполните предварительную обработку, чтобы она соответствовала json-формату. Для вашего примера, '" ["+ srcText.Replace ("} ","}, "). Заменить (" None "," '' ") +"] "' –