Showing posts with label Python. Show all posts
Showing posts with label Python. Show all posts

Tuesday, March 12, 2013

Python: Remove Non-printable characters from string

Current post is on how to remove non-printable characters from string.


Need a function to remove non-printable characters in python.


Remove Non-printable function for ASCII String:


def    remove_ascii_non_printable(str)
      """Removes Non-printable chars from ASCII String"""
      return ''.join([ch for ch in str if ord(ch) > 31 and ord(ch) < 126 or ord(c) = = 9])

Remove Non-printable function for Unicode String:



def    remove_unicode_non_printable(str)
      """Removes Non-printable chars from ASCII String"""
      return ''.join([ch for ch in str if ord(ch) > 31 or ord(c) = = 9])



Appreciate your feedback via comments.

Thanks.

Thursday, July 26, 2012

Python: AttributeError: 'list' object has no attribute 'join'

Current post is on how to recover from AttributeError: 'list' object has no attribute 'join'.


Started working on python and got struck in 'JOIN' function?

Got the "AttributeError: 'list' object has no attribute 'join' " error when trying to JOIN list in Python?

Just change the list and argument place.

Reason is we are wired to think like  object.some_function arguments but here its like argument.some_function object(s)


List JOIN in Python:


mypythonlist = ['ListElement1', 'ListElement2']
mypytonlist.join('-')   #Incorrect Usage which gave the AttributeError

'-'.join(mypythonlist)  #Correct Usage

# It will return 'ListElement1-ListElement2'

For detailed information refer to 'JOIN' function post

Hope this post saved your time.


Appreciate your feedback via comments. Thanks.

Python: JOIN Function for Iterable

Current post is on how JOIN function works in Python.


Recently started working on Python and got stuck in 'JOIN' function?

Not sure how the JOIN function works?

JOIN Function for iterable in Python:


string str.join(iterable)

where,
          str = string which will be used to append the elements in iterable
          iterable = any iterable in python like list, string

          string = returns the joined string

Confused ??

Reason is we are wired to think like  object.some_function arguments but here its like argument.some_function object(s)


List JOIN in Python:


mypythonlist = ['First', 'Second']
mypytonlist.join('-')   #Incorrect Usage, it will cause AttributeError

'-'.join(mypythonlist)  #Correct Usage

# It will return 'First-Second'


String JOIN in Python:


mypythonstr = 'MyPythonString'
mypythonstr.join('-')  #Incorrect Usage

'-'.join(mypythonstr)   #Correct Usage

# It  will return 'M-y-P-y-t-h-o-n-S-t-r-i-n-g'

I hope now you understand how 'JOIN' function works in Python.


Appreciate your feedback via comments. Thanks.

Python: Converting VbScript Left-Right Function

Current post is on how to convert Left-Right Function of VBScript in Python 3.2.


Converting or migrating a VbScript project to Python?

Stuck in converting Left or Right function of VbScript in Python?


VBScript Left Function:


Left(string, Length)

where,
          string = your text string
          length = number of character from left you want to extract

Example:

myleftstring = Left("Hello from Left, noting more!!!",15);

//myleftstring will contain 'Hello from Left'.


VBScript Right Function:


Right(string, Length)


where,
          string = your text string
          length = number of character from right you want to extract


Example:


myrightstring = Right("Hello from Left, noting more!!!",15);


//myrightstring will contain ', noting more!!!'.


Python: Array Slicing:


Array slicing is done using [ : ] operator.

Example:

text = 'Hello from Python 3.2'
leftslicedtext = text[:11]

//leftslicetext will contain 'Hello from'

rightslicedtext = text[11:]

//rightslicedtext will contain ' Python 3.2'

frombehind = text[-3:]

//frombehind will contian '3.2'

Summarize:


To convert the VbScript Left / Right Function, use the array slicing feature of Python.

It is simple, clean and readable.

Appreciate your feedback via comments. Thanks.

Friday, July 13, 2012

Python: Global Variable Access

Current post is on how to access the global variables in Python 3.2. 


Global variables can be easily accessed by using the keyword global.

The global statement is a declaration which holds for the entire current code block. It means that the listed identifiers are to be interpreted as globals. It would be impossible to assign to a global variable without global, although free variables may refer to globals without being declared global.

Names listed in a global statement must not be used in the same code block textually preceding that global statement.

Names listed in a global statement must not be defined as formal parameters or in a for loop control target, class definition, function definition, or import statement.

Example 1: Change the global variable
globalVariable = False

def ChangeGlobalFunction():
      """Function that changes global variable"""
      global  globalVariable  #Global statement
      globalVariable = True

def PrintGlobalFunction():
      """Function that prints global variable"""
      print(globalVariable)

PrintGlobalFunction()
ChangeGlobalFunction()
PrintGlobalFunction()
Output:
False
True

Python: Check for file existence

Current post is on how to check whether file exists on system running Python 3.2.


First import the 'os.path' module.  os.path module implements some useful functions on pathname.

import os.path

Add the following line to check file.
  
os.path.exists(filename)

It returns True if filename exists else returns False


To make sure it is file and it exists, one can use:

os.path.isfile(filename)

It returns True only if the type is of file and it exists else returns False


Example 1: File Check using 'exists' function

      if os.path.exists("HelloWorld.py"):
           print("Hello World")
      else:
           print("No World !!!")

Example 2: File Check using 'isfile' function

      if os.path.isfile("HelloWorld.py"):
           print("Hello World")
      else:
           print("No World !!!")


Python: Message Box in Windows

Current post is on how to show message box in Python 3.2 running on Microsoft Windows OS.


First import the 'ctypes' module. ctypes module provides C compatible data types and allows calling functions in DLLs or shared libraries.

import ctypes

Next we need is the messagebox function pointer

messageBox = ctypes.windll.user32.MessageBoxW  *

After having the function pointer, we just need to call the function with required arguments.

returnValue = messageBox(ParentHandle,Error Text,Title Text,ButtonEnumValue)

where,
           ParentHandle = Handle to parent window
           Error Text = Text one wants to show to end user
           Title Text = Text that will appear on Title bar of message box
           ButtonEnumValue = Which button one needs to show

Detailed information can be found on Microsoft MessageBox Documentation

Based on return value, one can take the required action.

Example 1: Message Box with OK button.

      import ctypes

      messageBox = ctypes.windll.user32.MessageBoxW

      returnValue = messageBox(None,"Message Box!!!","Hello",0x40 | 0x0)


 
Example 2: Message Box with OK-Cancel button & ReturnValue Check


      import ctypes

      messageBox = ctypes.windll.user32.MessageBoxW

      returnValue = messageBox(None,"Message Box!!!","Hello",0x40 | 0x1)

      if returnValue = = 1:
            print("Pressed OK")
     elif returnValue = = 2:
           print("Pressed Cancel")


* Python 3.x takes unicode only.


Disclaimer:

The above post and all the posts in the blog are derived from facts, information, logical interpretation and logical conclusion of printed and internet materials available to me, perceived and produced by 99 gm brain of mine, which by no means always be accurate, consistent and complete.

All the posts are for personal quick reference only.

If any suggestion, correction, misinterpretation, misconception commented, which will be moderated and deleted if required, to avoid unforeseen issues.

If any trademark / copywrite issue is present, do send in a mail and appropriate tag (logo, name, website link) will be attached to the same.

Additional disclaimer will be attached wherever required in the post.