Open In App

Python | Swap commas and dots in a String

Improve
Improve
Like Article
Like
Save
Share
Report

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




# Python code to replace, with . and vice-versa
def Replace(str1):
    maketrans = str1.maketrans
    final = str1.translate(maketrans(',.', '.,', ' '))
    return final.replace(',', ", ")
 
 
# Driving Code
string = "14, 625, 498.002"
print(Replace(string))


Output

14.625.498, 002

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))


Output

14.625.498, 002

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)
 
#contributed by prachijpatel1


Output

14.625.498, 002

Approach 4: Using split and join
 

Python3




#Approach 4: Using split and join
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))
#This code is contributed by Edula Vinay Kumar Reddy


Output

14.625.498, 002

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- 

  1. Create an empty arr array .
  2. We will iterate the given input string character by character.
  3. While iterating the string, if we encounter ‘.’ character in string then we will append ‘, ‘ string in arr named array we created earlier.
  4. While iterating the string, if we encounter  ‘,’ character in string then we will append ‘.’ character in arr named array.
  5. While iterating the string, if we encounter  ‘ ‘ character in string then we skip the current iteration and move forward to next iteration.
  6. While iteration, if there is no character from 3,4,5 step in string, then append that character in the arr array.
  7. Then at the end of the iteration of string, convert array to string using ‘join’ string method.
  8. 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




# Python code to replace, with . and vice-versa
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
 
# Driving Code
string = "14, 625, 498.002"
print(Replace(string))
 
# This code is contributed by Pratik Gupta


Output

14.625.498, 002

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:

  1. Define a string variable ‘string’ with the input value.
  2. Define a list of tuples with the characters to be replaced and the replacement characters.
  3. Use the reduce() function with lambda function to iterate through each tuple in the list and replace the characters in the string.
  4. 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)
#This code is contributed by Rayudu.


Output

14.625.498.002

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).



Last Updated : 23 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads