2016-07-31 16 views
-2

此代碼將返回我正在查找的文本。但我無法調整標點符號。使用元組值替換python字符串

fieldnames = ("user","messageid","message","destination", "code","mobile","mytimestamp") 
newData = ["\'%s\': %s" % (tup, tup) for tup in fieldnames if tup!='destination' ] 

newData將返回

["'user': user", "'messageid': messageid", "'message': message", "'code': code", "'mobile': mobile", "'mytimestamp': mytimestamp"] 

我需要刪除雙引號,並添加\

期望的字符串(未列出)輸出是這樣的......

"[\'user\': user, \'messageid\': messageid, \'message\': message, \'code\': code, \'mobile\': mobile, \'mytimestamp\': mytimestamp]" 

回答

2

什麼:

fieldnames = ("user","messageid","message","destination", "code","mobile","mytimestamp") 

s = "[%s]" % ', '.join(["\\'%s\\': %s" % (t,t) for t in fieldnames if t != 'destination']) 
print(s) 
0

您可以將代碼更改爲類似

newData = ("\"[" + 
      ", ".join("\\'%s\\': %s" % (tup, tup) 
        for tup in fieldnames if tup!='destination') + 
      "]\"") 

注:我假設你想要雙引號,反斜槓和單引號是字符串的一部分。確保輸出既不是Python也不是Javascript,因爲:用於字典/對象,但它們需要大括號{/}而不是括號[/]

1

你擁有它幾乎完成了。你只需要這些細微的變化:

  1. 使用原始字符串,只需將字符串前添加一個r你已經有了:

    r"\'%s\': %s"

  2. 你有你需要的所有串組列表。剛開始使用str.join加入他們的行列:

    ', '.join(newData)

  3. 唯一缺少的是你的開啓和關閉括號。

你的整個代碼將是:

fieldnames = ("user","messageid","message","destination", "code","mobile","mytimestamp") 
newData = [r"\'%s\': %s" % (tup, tup) for tup in fieldnames if tup!='destination' ] 

print('[' + ', '.join(newData) + ']') 
# [\'user\': user, \'messageid\': messageid, \'message\': message, \'code\': code, \'mobile\': mobile, \'mytimestamp\': mytimestamp]