写入文件时添加了奇怪的字符

时间:2014-04-30 22:37:46

标签: javascript python html

我将以下行作为javascript写入html文件的末尾。由于某种原因,将place变量写入文件后,会添加一个新行或一些类似的字符。我不介意这一点,因为我不会通过书面文字查看,但Chrome告诉我这是一个非法的角色。

写入html的代码:

map_html.write(
    "geocoder.geocode( { 'address': '" + place + "'}, function(results, status) {\n\
      var marker = new google.maps.Marker();\n\
      marker.setPosition(results[0].geometry.location);\n\
      marker.setMap(map);\n\
      bounds.extend(marker.position);\n\
    });\n"
)

输出:

geocoder.geocode( { 'address': 'Brooklyn, NY
'}, function(results, status) {
          var marker = new google.maps.Marker();
          marker.setPosition(results[0].geometry.location);
          marker.setMap(map);
          bounds.extend(marker.position);
        });

2 个答案:

答案 0 :(得分:2)

用以下代码替换您的代码:

var geo_json = JSON.stringify({ 'address': place});
map_html.write(
    "geocoder.geocode(" + geo_json + ", function(results, status) {\n\
      var marker = new google.maps.Marker();\n\
      marker.setPosition(results[0].geometry.location);\n\
      marker.setMap(map);\n\
      bounds.extend(marker.position);\n\
    });\n"
)

这将回避问题,并允许您查看stringify ed json的样子。编写自己的json通常是一个坏主意。让javascript生成json,它很擅长。

如果仍然会导致疼痛,请尝试var geo_json = JSON.stringify({ 'address': place.trim()});,这会从place字符串的末尾删除空格。

如果仍然会导致疼痛,请尝试使用正则表达式来验证place输入。像[A-Za-z_ ,]+

这样的东西

修改

哦,废话,我在这里混淆了javascript和python。

import json

geo_json = json.dumps({ 'address': place})
map_html.write(
    "geocoder.geocode(" + geo_json + ", function(results, status) {\n\
      var marker = new google.maps.Marker();\n\
      marker.setPosition(results[0].geometry.location);\n\
      marker.setMap(map);\n\
      bounds.extend(marker.position);\n\
    });\n"
)

答案 1 :(得分:0)

尝试多线字符串怎么样?

map_html.write(
    "geocoder.geocode( { 'address': " + place + "}, function(results, status) {" + """
        var marker = new google.maps.Marker();
        marker.setPosition(results[0].geometry.location);
        marker.setMap(map);
        bounds.extend(marker.position);
    });
    """
)