Ошибка в питоне заменить. (AttributeError: объект 'tuple' не имеет атрибута 'replace') - PullRequest
3 голосов
/ 24 февраля 2011

Среда

Я использую Python 3, и моя ОС - Windows 7. Я понимаю, что некоторые команды изменились с перехода с Python 2.7 на 3 (что я использовал).

Проблема

Переменная временная, но она такая:

(((((0, 7), 7), 8), 4), 5) 

Вот код, который избавляет от скобок:

randy = randy.replace(")", "")
randy = randy.replace("(", "")
randy = randy.replace(" ", "")

Когда он пытается выполнить функцию замены, я получаю сообщение об ошибке:

Traceback (most recent call last):
File "<string>", line 248, in run_nodebug
File "Criptic.py", line 134, in <module>
randy = randy.replace(")", "")
AttributeError: 'tuple' object has no attribute 'replace'

Редактировать:

Вот весь код:

#Import string
import string
import random
#Input user data
text = input("Enter your text to be converted: ")

#Test Print
print("-------------------------")
print("Your text is: ",text)




#Break up all the data
data = list(text)

#Lowercase
count = text.count("a")
count1 = text.count("b")
count2 = text.count("c")
count3 = text.count("d")
count4 = text.count("e")
count5 = text.count("f")
count6 = text.count("g")
count7 = text.count("h")
count8 = text.count("i")
count9 = text.count("j")
count10 = text.count("k")
count11 = text.count("l")
count12 = text.count("m")
count13 = text.count("n")
count14 = text.count("o")
count15 = text.count("p")
count16 = text.count("q")
count17 = text.count("r")
count18 = text.count("s")
count19 = text.count("t")
count20 = text.count("u")
count21 = text.count("v")
count22 = text.count("w")
count23 = text.count("x")
count24 = text.count("y")
count25 = text.count("z")
count26 = text.count("A")

#Uppercase
count27 = text.count("B")
count28 = text.count("C")
count29 = text.count("D")
count30 = text.count("E")
count31 = text.count("F")
count32 = text.count("G")
count33 = text.count("H")
count34 = text.count("I")
count35 = text.count("J")
count36 = text.count("K")
count37 = text.count("L")
count38 = text.count("M")
count39 = text.count("N")
count40 = text.count("O")
count41 = text.count("P")
count42 = text.count("Q")
count43 = text.count("R")
count44 = text.count("S")
count45 = text.count("T")
count46 = text.count("U")
count47 = text.count("V")
count48 = text.count("W")
count49 = text.count("X")
count50 = text.count("Y")
count51 = text.count("Z")

#Other Characters
count52 = text.count(" ")
count53 = text.count("?")
count54 = text.count("@")
count55 = text.count("(")
count56 = text.count(")")
count57 = text.count(".")

#Numbers
count58 = text.count("1")
count59 = text.count("2")
count60 = text.count("3")
count61 = text.count("4")
count62 = text.count("5")
count63 = text.count("6")
count64 = text.count("7")
count65 = text.count("8")
count66 = text.count("9")
count67 = text.count("0")

#Counting how many characters in the sentence
finalcount = count + count1 + count2 + count3 + count4 + count5 + count6 + count7 + count8 + count9  + count10  +   count11  + count12  + count13  + count14 + count15 + count16 + count17 + count18 + count19 + count20 + count21 + count22 + count23 + count24 + count25 + count26 + count27 + count28 + count29 + count31 + count32 + count33 + count34 + count35 + count36 + count37 + count38 + count39 + count40 + count41 + count42 + count43 + count44 + count45 + count46 + count47 + count48 + count49 + count50 + count51 + count52 + count53 + count54 + count55 + count56 + count57 + count58 + count59 + count60 + count61 + count62 + count63 + count64 + count65 + count66 + count67

#Final count of Characters
print("       Chars: ",finalcount)
print("-------------------------")





char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()?_+-=1234567890           "
charnum = 74 + 11
list(char)

randy = 0
num = 0
while num < finalcount:
    rand = random.randrange(1,9)
    randy = randy,rand
    finalcount = finalcount - 1
    if rand == 1:
    print(text[finalcount],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],",")
if rand == 2:
    print(char[random.randrange(0,charnum)],text[finalcount],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],",")
if rand == 3:
    print(char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],text[finalcount],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],",")
if rand == 4:
    print(char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],text[finalcount],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],",")
if rand == 5:
    print(char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],text[finalcount],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],",")
if rand == 6:
    print(char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],text[finalcount],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],",")
if rand == 7:
    print(char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],text[finalcount],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],",")
if rand == 8:
    print(char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],text[finalcount],char[random.randrange(0,charnum)],",")
if rand == 9:
   print(char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],char[random.randrange(0,charnum)],text[finalcount],",")


randy = randy.replace(")", "")
randy = randy.replace("(", "")
randy = randy.replace(" ", "")

print("-------------------------")
print("::::::::Completed::::::::")
print("-------------------------")
print(randy)
print("-This is your code unlock key. Without this code it will not decript!!!! ")
print("-------------------------")

Ответы [ 4 ]

4 голосов
/ 24 февраля 2011

У вас есть кортеж (своего рода список) чисел, и вы хотите сделать его строкой.Вы не можете заменить скобки, они не являются частью переменной, они являются только частью ее представления.

Вместо этого вы должны использовать join() и str()

 result = " ".join(str(x) for x in randy)

Однако это, вероятно, также не даст правильного результата, так как это вложенный список кортежей.Вы, вероятно, имеете в виду: randy = randy + (rand,) вместо randy = randy,rand.

2 голосов
/ 24 февраля 2011
randy = randy,rand

Эта нотация создает кортеж из двух элементов, у кортежей нет метода с именем replace.

Если вы просто хотите объединить числа в представление списка, разделенных запятыми, вы можетесделайте это в цикле:

randy = []
num = 0
while num < finalcount:
    rand = random.randrange(1,9)
    randy.append(rand)

Затем вы удалите строки replace и вместо этого сделайте это

randy = ",".join(randy)

, чтобы получить строку, значения которой разделены запятыми.

Возможно, вам следует добавить вывод, который вы хотели бы получить, к вашему вопросу, потому что на данный момент не совсем ясно, что именно вы хотите сделать.

0 голосов
/ 11 января 2019

Чтобы удалить список символов, вы можете использовать метод translate строки:

import string
name = "(((((0, 7), 7), 8), 4), 5)"
table = string.maketrans( '', '', )
print name.translate(table,"()")
0 голосов
/ 11 января 2019
exam_st_date = (11, 12, 2014)
# Sample Output : The examination will start from : 11 / 12 / 2014

newtup = str(exam_st_date).replace(',', ' /')


print(newtup)

посмотрите на мой пример, который даст вам некоторые результаты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...