Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python TypeError: expected a string or other character buffer object

I am replacing all the occurrences of 2010 in my JSON file with a random number between 1990 and 2020.

import fileinput
from random import randint
f = fileinput.FileInput('data.json', inplace=True, backup='.bak')
for line in f:
    print(line.replace('2010', randint(1990, 2020)).rstrip())

I get this error:

Traceback (most recent call last): File "replace.py", line 5, in print(line.replace('2010', randint(1990, 2020)).rstrip()) TypeError: expected a string or other character buffer object

And here is one example of such an occurrence:

"myDate" : "2010_02",
like image 495
cplus Avatar asked Dec 03 '16 13:12

cplus


1 Answers

string.replace(s, old, new[, maxreplace])

Return a copy of string s with all occurrences of substring old replaced by new. If the optional argument maxreplace is given, the first maxreplace occurrences are replaced.

The new value must be string, but you are passing a value of type int.

change :

line.replace('2010', randint(1990, 2020)).rstrip())

to:

line.replace('2010', str(randint(1990, 2020))).rstrip()
like image 175
eyllanesc Avatar answered Oct 16 '22 05:10

eyllanesc