On 23 Feb 2006 06:44:36 -0800, "gene tani" <[EMAIL PROTECTED]> wrote:
> >gene tani wrote: >> Franz Steinhaeusler wrote: >> > >> > Who can help me (regular expression, which works for both cases). >> >> universal newlines: >> http://www.python.org/doc/2.3.3/whatsnew/node7.html >> http://mail.python.org/pipermail/python-list/2006-February/324410.html > >if multiple end-of line markers are present (\r, \r\n and or \n), use >the file's newlines attribute to see what they are. I think the thread >linked above touched on that. Otherwise newlines (or os.linesep) >should tell you what end of line is in that file. > >http://docs.python.org/lib/bltin-file-objects.html Thank you for your info. I need it for a file, whose line endings I don't know. I wrote for DrPython this script: (using styled text control and wxPython) and this works, but I'm looking for a shorter way: =================================================================== #drscript #RemoveTrailingWhitespaces import re import string eol = DrDocument.GetEndOfLineCharacter() regex = re.compile('\s+' + eol, re.MULTILINE) relewin = re.compile('\r\n', re.M) releunix = re.compile('[^\r]\n', re.M) relemac = re.compile('\r[^\n]', re.M) text = DrDocument.GetText() #check line endings win = unix = mac = 0 if relewin.search(text): win = 1 if releunix.search(text): unix = 1 if relemac.search(text): mac = 1 mixed = win + unix + mac #correct the lineendings before if mixed > 1: wx.MessageDialog(DrFrame, "Line endings mixed", "Remove trailing Whitespace", wx.ICON_EXCLAMATION).ShowModal() #ok to remove else: lines = text.split(eol) new_lines = [] nr_lines = 0 nr_clines = 0 first_cline = -1 for line in lines: nr_lines += 1 result = regex.search(line + eol) if result != None: end = result.start() nr_clines += 1 if first_cline == -1: first_cline = nr_lines new_lines.append (line [:end]) else: new_lines.append(line) #file has trailing whitespaces if nr_clines > 0: d = wx.MessageDialog(DrFrame, "%d of %d lines have trailing whitespaces (First:%d)\nCorrect?" % (nr_clines, nr_lines, first_cline), \ "Remove trailing Whitespace", wx.OK | wx.CANCEL | wx.ICON_QUESTION) answer = d.ShowModal() d.Destroy() if (answer == wx.ID_OK): newtext = string.join(new_lines, eol) #save current line curline = DrDocument.GetCurrentLine() DrDocument.SetText(newtext) #jump to saved current line DrDocument.GotoLine(curline) #no need to change the file else: wx.MessageDialog(DrFrame, "File ok!", "Remove trailing Whitespace", wx.ICON_EXCLAMATION).ShowModal() =========================================================================== -- Franz Steinhaeusler -- http://mail.python.org/mailman/listinfo/python-list