2017-08-13 19 views
-2

私はそれに文字列を持つリスト変数を持っています。何らかの理由で、それは次のように印刷しています:エスケープ文字を使用したPython文字列リスト印刷ですか?

print('Value = ' + str(var)) 

出力:

Value = [\'123456789\'] 

をものはSTR機能によって追加エスケープ引用ティックであるかのように思えるが、私は取得する方法がわかりませんそれらを取り除く。

EDIT:混乱して申し訳ありません。より完全な裏話です:

私はチャットアナリティクスアプリを書いています。ここに私のメッセージクラスがあります:メッセージが保存される場所

class Message: 
    def __init__(self, name, text, likers): 
     self.name = name 
     self.text = text 
     self.likers = likers 

    def __str__(self): 
     return 'Message: ' + self.name + ' said "' + self.text + '", liked by ' + str(self.likers) 

これは、次のとおりです。上記

message = data['response']['messages'][i] 

user_id = message['user_id'] 
name = message['name'] # Sender 
text = re.sub(r'\W+', ' ', str(message['text'])) 
likers = message['favorited_by'] 

msg = Message(name, text, likers) 

users[user_id].messages.append(msg) 

dataはJSONがチャットサーバーから返されます。 iはメッセージをループする変数です(20ブロックで受信しました)。 usersは、ユーザーIDをユーザーオブジェクト(他のクラス)にマッピングする辞書です。各メッセージは複数のユーザーが好きなので、likersはユーザーIDの配列です。

メッセージを印刷しようとしているときに問題が発生します。テストコード:

print([str(x) for x in users[user_names['MyUser']].messages]) 

user_namesは、ユーザーIDのに対してユーザ名をマッピングした辞書である)

コードが印刷こと:あなたのコードで

['Message: MyUser said "all of you", liked by [\'25843278\']', 'Message: MyUser said "why?", liked by [\'25843278\']'] 
+0

varの値が何でありますか。 –

+1

'var 'には何が含まれているか表示できますか? – wencakisa

+0

あなたの文字列に実際にそのようなバックスラッシュが含まれている可能性が高いです。 – NPE

答えて

0

likersは、文字列のリストです。

likers = ['25843278'] 

あなたがstrを使用する場合は、Pythonはこのように、文字列にこのリストを変換します:だから

text = str(likers) 
print(repr(text)) 
# -> "['25843278']" 

、あなたの__str__方法は、単一引用符で文字列を返します。

はさらに、あなたがメッセージのリストを作成します。

[str(x) for x in users[user_names['MyUser']].messages] 

Pythonはこのリストを印刷します。各項目を文字列表現に変換します。だからそれはそれぞれの恋人の一重引用符を逃れるでしょう。これを避けるために

は、あなたはこのように、文字列の中に自分をlikersのリストに変換することができます:

def __str__(self): 
    return ('Message: ' + self.name + ' said "' + self.text + '", 
      liked by ' + ', '.join(self.likers)) 
+0

'likers'を作成した直後に' print( 'likers =' + str(likers)) 'を実行し、' likers = ['25843278'] 'を表示します。 – vasilescur

+0

@ user3284178: 'repr'関数を使って変数の文字列表現を表示してください。 –

+0

さて、 'print( 'likers =' + repr(message ['favorited_by']))'は同じことを表示します: 'likers = ['25843278']'。 – vasilescur

関連する問題