Python | Swap commas and dots in a String
Last Updated :
23 Apr, 2023
The problem is quite simple. Given a string, we need to replace all commas with dots and all dots with the commas. This can be achieved in many different ways.
Examples:
Input : 14, 625, 498.002
Output : 14.625.498, 002
Method 1: Using maketrans and translate()
maketrans: This static method returns a translation table usable for str.translate(). This builds a translation table, which is a mapping of integers or characters to integers, strings, or None.
translate: This returns a copy of the string where all characters occurring in the optional argument are removed, and the remaining characters have been mapped through the translation table, given by the maketrans table.
For more reference visit Python String Methods.
Python3
def Replace(str1):
maketrans = str1.maketrans
final = str1.translate(maketrans( ',.' , '.,' , ' ' ))
return final.replace( ',' , ", " )
string = "14, 625, 498.002"
print (Replace(string))
|
Method 2: Using replace()
This is more of a logical approach in which we swap the symbols considering third variables. The replace method can also be used to replace the methods in strings. We can convert “, ” to a symbol then convert “.” to “, ” and the symbol to “.”. For more reference visit Python String Methods.
Example:
Python3
def Replace(str1):
str1 = str1.replace( ', ' , 'third' )
str1 = str1.replace( '.' , ', ' )
str1 = str1.replace( 'third' , '.' )
return str1
string = "14, 625, 498.002"
print (Replace(string))
|
Method 3: Using sub() of RegEx
Regular Expression or RegEx a string of characters used to create search patterns. RegEx can be used to check if a string contains the specified search pattern. In python, RegEx has different useful methods. One of its methods is sub(). The complexity of this method is assumed to be O(2m +n), where m=length of regex, n=length of the string.
The sub() function returns a string with values altered and stands for a substring. When we utilise this function, several elements can be substituted using a list.
Python3
import re
txt = "14, 625, 498.002"
x = re.sub( ', ' , 'sub' , txt)
x = re.sub( '\.' , ', ' , x)
x = re.sub( 'sub' , '.' , x)
print (x)
|
Approach 4: Using split and join
Python3
def Replace(str1):
str1 = "$" .join(str1.split( ', ' ))
str1 = ', ' .join(str1.split( '.' ))
str1 = '.' .join(str1.split( '$' ))
return str1
string = "14, 625, 498.002"
print (Replace(string))
|
Time Complexity: O(n), where n is the length of the input string
Auxiliary Space: O(n)
Approach 5: Using simple for loop and join method.
Steps-
- Create an empty arr array .
- We will iterate the given input string character by character.
- While iterating the string, if we encounter ‘.’ character in string then we will append ‘, ‘ string in arr named array we created earlier.
- While iterating the string, if we encounter ‘,’ character in string then we will append ‘.’ character in arr named array.
- While iterating the string, if we encounter ‘ ‘ character in string then we skip the current iteration and move forward to next iteration.
- While iteration, if there is no character from 3,4,5 step in string, then append that character in the arr array.
- Then at the end of the iteration of string, convert array to string using ‘join’ string method.
- Required result is obtained and we replaced all commas with dots and all dots with the commas.
Below is the implementation of above approach:
Python3
def Replace(str1):
arr = []
for i in str1:
if (i = = '.' ):
arr.append( ', ' )
elif (i = = ',' ):
arr.append( '.' )
continue
elif (i = = ' ' ):
continue
else :
arr.append(i)
str2 = ''.join(arr)
return str2
string = "14, 625, 498.002"
print (Replace(string))
|
Time Complexity : O(n), where n is the length of the input string
Auxiliary Space : O(n), where n is the length of the input string
Approach 6: Using reduce():
Algorithm:
- Define a string variable ‘string’ with the input value.
- Define a list of tuples with the characters to be replaced and the replacement characters.
- Use the reduce() function with lambda function to iterate through each tuple in the list and replace the characters in the string.
- Return the final string with all the characters replaced.
Python3
from functools import reduce
string = "14, 625, 498.002"
result = reduce ( lambda acc, char: acc.replace(char[ 0 ], char[ 1 ]), [( '.' , ', ' ), ( ', ' , '.' ), ( ' ' , '')], string)
print (result)
|
Time Complexity: O(n), where n is the length of the input string. The time complexity of the reduce function is O(n).
Space Complexity: O(n), where n is the length of the input string. The space complexity of the input string and the result string is O(n).
Please Login to comment...