【问题标题】:Python string parsing urlPython字符串解析url
【发布时间】:2022-01-20 07:43:13
【问题描述】:

我的字符串看起来像这样:

www.google.com(谷歌网页)www.facebook.com(Facebook 网页)

或者因为它们在文件夹中,所以其中有一些空格:

I:\xyz\text englishtest(英语测试)

我正在使用 datatablespython flask 并希望将 URL 的名称(括号中的描述)显示为超链接,我在一个单元格中有多个 url,我得到了它的工作,但 url 中的空格会导致问题。

{
                        "targets": 10,
                        "data": "download_link",
                        "render": function (data, type, row, meta) {
                          var links = data.split(' ');
                          url = links.shift();
                    
                          if (links.length) {
                            links = links.join(' ');
                          } else {
                            links = url;
                          }
                          
                          console.log('<a href="' + url + '">' + links + '</a>');
                            return '<a href="' + url + '">' + links + '</a>';
                        }
                    }

【问题讨论】:

  • 嗨。正如@Detflef 所指出的,这不是 Python 代码,因此您应该修改标签。

标签: python flask datatables string-parsing


【解决方案1】:

在您的问题中,您在 javascript 中提供了代码,所以我的答案基于此。任何人都可以猜测您的 Python 代码。

您可以使用regular expressions 来拆分字符串。我为此推荐 matchAll 函数。

在以下示例中,对由 url 组成的几个部分进行了非常简化的搜索,并在括号中进行了以下描述。这两个部分使用组分开。可能需要调整正则表达式以更好地满足您的需求。

const data = [
  {
    "download_link": "www.google.com (Google Webpage) "
      + "www.facebook.com (Facebook Webpage) "
      + "127.0.0.1:5000/my engishtest (English Test)"
  }
];

$(document).ready(function() {
  $('#table_id').DataTable({
    data: data,
    columns: [
      {
        data: 'download_link',
        render: function(data, type, row) {
          // The regular expression to search for.
          const regexp = /([^\(]+)\(([^\)]+)\)\s*/g;
          // Iterate over all search results. 
          return Array.from(data.matchAll(regexp), m => {
            // Extract the found groups and create the URL.
            const [_, uri, desc] = m;
            return `<a href="${encodeURI('http://' + uri.trim())}">${desc}</a>`;
          }).join(' ');
        }
      }
    ]
  });
});

如果你想预先在Python中拆分字符串,我参考re模块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    相关资源
    最近更新 更多