0

そこで、Python で作成したリストを HTML 形式で JavaScript として記述できるようにフォーマットする手順を作成しました。このように見えます

from django.template.defaultfilters import slugify
def js_format(cars):
   new_cars = []
   for car in cars:
       car = str(slugify(car))+'|'+car
       new_cars.append(car)
   return new_cars

dodge = ["Avenger","Caliber","Caravan","Challenger","Colt","D150","D250","D350","Dakota","Dart","Daytona","Durango","Durango Hybrid","Dynasty","Grand Caravan","Intrepid","Journey","Magnum","Monaco","Neon","Nitro","Omni","Raider","Ram 1500","Ram 2500","Ram 3500","Ram 50","Ram Van","Ram Wagon","Ramcharger","Shadow","Sprinter","SRT Viper","Spirit","Stealth","Stratus","Viper","W150","W250","W350"]

「回避」リストの手順を使用すると...

>>> js_format(dodge)
['avenger|Avenger', 'caliber|Caliber', 'caravan|Caravan', 'challenger|Challenger', 'colt|Colt', 'd150|D150', 'd250|D250', 'd350|D350', 'dakota|Dakota', 'dart|Dart', 'daytona|Daytona', 'durango|Durango', 'durango-hybrid|Durango Hybrid', 'dynasty|Dynasty', 'grand-caravan|Grand Caravan', 'intrepid|Intrepid', 'journey|Journey', 'magnum|Magnum', 'monaco|Monaco', 'neon|Neon', 'nitro|Nitro', 'omni|Omni', 'raider|Raider', 'ram-1500|Ram 1500', 'ram-2500|Ram 2500', 'ram-3500|Ram 3500', 'ram-50|Ram 50', 'ram-van|Ram Van', 'ram-wagon|Ram Wagon', 'ramcharger|Ramcharger', 'shadow|Shadow', 'sprinter|Sprinter', 'srt-viper|SRT Viper', 'spirit|Spirit', 'stealth|Stealth', 'stratus|Stratus', 'viper|Viper', 'w150|W150', 'w250|W250', 'w350|W350']

リスト内の各項目を二重引用符で囲む必要があることを除いて、すべてが希望どおりにフォーマットされています。Pythonは一重引用符と二重引用符を同等に認識するため、Pythonで引用符を変更する方法がわかりません。どんな助けでも大歓迎です。

私の質問をご覧いただきありがとうございます

4

3 に答える 3

5

json.dumps()Javascript リテラルを作成するために使用します。

def js_format(cars):
   new_cars = ['{0!s}|{1}'.format(slugify(car)), car) for car in cars]
   return json.dumps(new_cars)

これにより、適切に引用された文字列を含む完全な JS リストが生成されます。

>>> js_format(dodge)
'["avenger|Avenger", "caliber|Caliber", "caravan|Caravan", "challenger|Challenger", "colt|Colt", "d150|D150", "d250|D250", "d350|D350", "dakota|Dakota", "dart|Dart", "daytona|Daytona", "durango|Durango", "durango-hybrid|Durango Hybrid", "dynasty|Dynasty", "grand-caravan|Grand Caravan", "intrepid|Intrepid", "journey|Journey", "magnum|Magnum", "monaco|Monaco", "neon|Neon", "nitro|Nitro", "omni|Omni", "raider|Raider", "ram-1500|Ram 1500", "ram-2500|Ram 2500", "ram-3500|Ram 3500", "ram-50|Ram 50", "ram-van|Ram Van", "ram-wagon|Ram Wagon", "ramcharger|Ramcharger", "shadow|Shadow", "sprinter|Sprinter", "srt-viper|SRT Viper", "spirit|Spirit", "stealth|Stealth", "stratus|Stratus", "viper|Viper", "w150|W150", "w250|W250", "w350|W350"]'
于 2012-11-30T21:23:05.003 に答える
2

for ループ内で、割り当てを次のように変更します。

car = '"' + str(slugify(car)) + '|' + car + '"'

または、文字列の書式設定を使用できます。

car = '"{0}|{1}"'.format(str(slugify(car)), car)

これを誤解している可能性がありますがjs_format()、JSON 文字列を返しますか? その場合は、現在の関数を使用しますimport jsonが、ファイルの先頭にあり、return ステートメントを に変更しますreturn json.dumps(new_cars)

于 2012-11-30T21:21:39.800 に答える
0

文字列に二重引用符を含める必要がある場合は、手動で追加します。

car = '"%s|%s"' % (slugify(car), ca)
于 2012-11-30T21:23:36.090 に答える