Verfasst: Dienstag 27. Januar 2009, 20:23
geht nicht gibts nicht
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Scheinbar schon oO' Implementier die .net Bibliothek für RegEx nach, benutz IronPython oder schmeiß den Ausdruck weg und benutz was anderes (anderer ausdruck, obwohl sowas für einen RegEx schwer wird, CSV-Bibliothek angepasst)..streetfox hat geschrieben:geht nicht gibts nicht
Also das kann man doch nicht verallgemeinern - im Gegenteil gibts sicherlich auch solche, wo das gerade nicht erwünscht iststreetfox hat geschrieben: In foren solls schliesslich sachlich zu und her gehen.
Ja und? Wen stört das? Und auch hier liegst Du falsch: Man lernt ja nicht weniger über Python, nur weil man den dafür vorgesehenen Weg geht, und man lernt anders herum nicht mehr, nur weil man einen "tollen" RegExp bastelt!streetfox hat geschrieben: Ich ess jetzt meine Waffel ist zeit dazu ... das einzige Problem an der Sache ist, das ich halt weniger über Python lern und wieder VB mach. Meinetwegen.
Also ich denke der Glückszustand jedes einzelnen hier ist nicht von Dir abhängigDann seid ihr glücklich und ich auch.
Sehr sachlich ...streetfox hat geschrieben:geht nicht, gibts nicht ist eine Lebenseinstellung und nicht eine Höflichkeitsform.
Was stimmt den nicht?streetfox hat geschrieben:@Trundle:
leider ned:
Code: Alles auswählen
[ ['Value1;', 'Value2', '"Value3"', 'of "very" "difficult"', '', 'expressions'], ['and', '', 'we should not ;"then"; forget', 'that it \nworks ;'], ['as ""ss""'], ['expected""'], ['And', 'this "is"', ' a', 'new start'], ['And2', 'this is a', 'new start as well'], ['only this" line"', ' is malformat;ted with" quotes"']]
Also, ich erkläre dir warum die Regex nicht tut (was audax auch schon meinte, ich habe es eben etwas ausformuliert) und dass man meist am besten auf den CSV-Parser der in der Stdlib zugreift. Und dann erklärst du mir das das erstens niemanden interessiert (Hyperion klang recht interressiert.. tut mir Leid, dass ich ihm etwas über .NET erklärt habe) und zweitens dass es unsachlich ist.streetfox hat geschrieben:Ob wahr oder nicht, steht doch nicht zur debatte. Die Frage geht um die REGEXP. Dass Leonidas recht hat mit der eigenen Suppe is ja ok. Aber die Meinung hilft dem Problem nun mal nicht weiter.
Ich mag nun mal nicht wenn irgendwelche gescheiten leute die ganze zeit was zu motzen haben. In foren solls schliesslich sachlich zu und her gehen.
Code: Alles auswählen
from System.Text.RegularExpressions import Regex
re = Regex('(?>([^,"]*("[^"]*")*[^,"]*)*)("[^"]*)?')
text = '''"Value1;";"Value2";"""Value3""";"of ""very"" ""difficult""";"";"expressions"
"and";"";"we should not ;""then""; forget";"that it
works ;"
as ""ss""
expected""
"And";"this ""is""";" a";"new start"
"And2";"this is a";"new start as well"
"only "this" line";" is malformat;ted "with" quotes"'''
for i in re.Matches(text):
print i
Code: Alles auswählen
"that it
works ;"
as ""ss""
expected""
"And"
Code: Alles auswählen
Dim list As StringCollection = New StringCollection()
Dim ptest As New Regex("(?>([^,""]*(""[^""]*"")*[^,""]*)*)(""[^""]*)?")
Dim MatchResult As Match = ptest.Match(DATA)
While MatchResult.Success
list.Add(MatchResult.Value)
MatchResult = MatchResult.NextMatch()
End While
Bei mir startet er beim ersten Anführungszeichen in der ersten Zeile und endet in der 2. Zeile beim Schlusszeichen. Dann kommen Records, die die ganze Zeile lang sind.streetfox hat geschrieben:@rayo
.... nö, das oben ist 1 Record und nicht 3, auch von handCode: Alles auswählen
"that it works ;" as ""ss"" expected"" "And"
Code: Alles auswählen
" statt
\"
oder
LF (als zeichen)
statt
\n
Ich denke nicht, dass das jemals eingepflegt wird, denn so wie du es beschrieben hast, sind die Sonderzeichen nicht richtig ... sprich das Feld ist fehlerhaft.streetfox hat geschrieben:Wenn es uns gelingt das zu knacken kann ja jemand dafür sorgen dass dies in die stdlib vom CSV Parser eingepflegt wird?
Code: Alles auswählen
"...";"text der hier steht"
"...";"text der hier steht"
Code: Alles auswählen
"...";"text der
hier steht"
"...";"text der hier steht"
Ja soweit ist mir das klar, angewendet auf dein Beispiel gibts halt wieder mehrere Datensätze:streetfox hat geschrieben:= 2 DatensätzeCode: Alles auswählen
"...";"text der hier steht" "...";"text der hier steht"
im Vergleich zu
= 2 Datensätze (multiline)Code: Alles auswählen
"...";"text der hier steht" "...";"text der hier steht"
Code: Alles auswählen
"that it
works ;"
Code: Alles auswählen
<feld anfang>"that it
works ;"<feld ende> <neuer datensatz (neue zeile ausserhalb feld)>
<feld anfang>as ""ss""<feld ende> <neuer datensatz>
<feld anfang>expected""<feld ende> <neuer datensatz>
<feld anfang>"And"<feld ende> <neuer datensatz>
Dies sollte aber nicht in einen Parser in der Standardbibliothek einfliessen.streetfox hat geschrieben:Felder die fehlerhaft sind gibts nun mal immer wieder.
joa das gleiche wo ich vorher immer reingefallen binOder was mach ich falsch?
Code: Alles auswählen
works ;" <selbes Feld, neue Zeile>
as "ss"
joa, versteh ich schon...drum fragte ich hier nach einer REGEX ^^Dies sollte aber nicht in einen Parser in der Standardbibliothek einfliessen.
1. Ich bin nicht Trundle. Immernoch nicht.streetfox hat geschrieben:@Trundel
.NET 3.5 SP1
Code: Alles auswählen
"that it
works ;"
as ""ss""