I am receiving the below error when trying to run a command in Python 3.5.2 shell:
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit
(Intel)] on win32 Type "copyright", "credits" or "license()" for more information.
>>> folder = 'C:/users/kdotz/desktop'
>>> f = open(folder + '/genesis.txt', 'r')
>>> import operator, time, string
>>> start=time.time()
>>> genesis = {}
>>> for line in f:
line=line.split()
for word in line:
word = word.lower()
new_word=word.translate(string.maketrans("",""), string.punctutation)
if new_word in genesis:
genesis[new_word]+=1
else:
genesis[new_word]=1
Error:
Traceback (most recent call last):
File "<pyshell#15>", line 5, in <module>
new_word=word.translate(string.maketrans("",""), string.punctutation)
AttributeError: module 'string' has no attribute 'maketrans'
What am I doing incorrectly? I import string at the top of the code. Thanks in advance for the help!
maketrans
is deprecated in favor of new static methods
The
string.maketrans()
function is deprecated and is replaced by new static methods,bytes.maketrans()
andbytearray.maketrans()
. This change solves the confusion around which types were supported by thestring
module. Now,str
,bytes
, andbytearray
each have their ownmaketrans
andtranslate
methods with intermediate translation tables of the appropriate type.
You can use dir()
to verify that whenever you have this kind of issue:
>>> import string
>>>
>>> dir(string)
['Formatter', 'Template', '_ChainMap', '_TemplateMetaclass', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_re', '_string', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace']
>>>
As you can see, there is no maketrans
in the resulted list above.
Py 3.9:
"abcdef".translate(str.maketrans('def', 'ghi'))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With