J'ai un fichier CSV mais le délimiteur est un point-virgule ;
et chaque colonne est entourée de guillemets. Il y a aussi des occurrences de ;
dans certaines valeurs telles que & amp;
Analyse du fichier du délimiteur de semi-côlon
J'utilise TextFieldParser pour analyser le fichier. Ce sont les données de l'échantillon:
"A001";"RT:This is a tweet"; "http://www.whatever.com/test/module & amp;one"
Pour l'exemple ci-dessus, je reçois plusieurs colonnes/champs que ce que je devrais obtenir.
Field[0] = "A001"
Field[1] = "RT:This is a tweet"
Field[2] = "http://www.whatever.com/test/module&"
Field[3] = "one"
Ceci est mon code. Quels changements doivent être faits pour gérer un tel scénario?
using (var parser = new TextFieldParser(fileName))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(";");
parser.TrimWhiteSpace = true;
parser.HasFieldsEnclosedInQuotes = false;
int rowIndex = 0;
PropertyInfo[] properties = typeof(TwitterData).GetProperties();
while (parser.PeekChars(1) != null)
{
var cleanFieldRowCells = parser.ReadFields().Select(
f => f.Trim(new[] { ' ', '"' }));
var twitter = new TwitterData();
int index = 0;
foreach (string c in cleanFieldRowCells)
{
string str = c;
if (properties[index].PropertyType == typeof(DateTime))
{
string twitterDateTemplate = "ddd MMM dd HH:mm:ss +ffff yyyy";
DateTime createdAt = DateTime.ParseExact(str, twitterDateTemplate, new System.Globalization.CultureInfo("en-AU"));
properties[index].SetValue(twitter, createdAt);
}
else
{
properties[index].SetValue(twitter, str);
}
index++;
}
}
-Alan-
Avez-vous essayé la mise 'HasFieldsEnclosedInQuotes' true? – kuujinbo
Oui je l'ai fait mais pas différent –
Essayez d'appeler System.Net.WebUtility.HtmlDecode() sur chaque ligne. Il va tourner '&' dans '&', ainsi que tout autre décodage. – kuujinbo