目錄
問題內容
解決方法
首頁 後端開發 Golang python 正規表示式 split 函數在 golang 中等效

python 正規表示式 split 函數在 golang 中等效

Feb 13, 2024 pm 07:45 PM
字串數組

python 正则表达式 split 函数在 golang 中等效

在程式設計領域中,正規表示式是一種強大的工具,用於匹配和處理字串。在Python中,split函數是一個常用的正規表示式函數,用於將字串分割成子字串。然而,對於使用Golang的開發者來說,他們可能想知道在Golang中如何實現與Python中split函數相同的功能。在本文中,php小編子墨將向您介紹如何在Golang中等效地使用正規表示式split函數,以便更好地利用這個功能強大的工具。

問題內容

我有下面的 python 程式碼來匹配正規表示式::

import re
digits_re = re.compile("([0-9ee.+]*)")

p = digits_re.split("hello, where are you 1.1?")

print(p)
登入後複製

它給了這個輸出:: ['', '', 'h', 'e', '', '', 'l', '', 'l', '', 'o', '', ',', ' ', ' '、''、'w'、''、'h'、'e'、''、''、'r'、'e'、''、''、' '、''、' a' , '', 'r', 'e', '', '', ' ', '', 'y', '', 'o', '', 'u', '', ' ', '1.1 ', '', '', '?', '', '']

我正在嘗試使用 golang 來獲得上述輸出。

package main

import (
    "bytes"
    "fmt"
    "log"
    "os/exec"
    "regexp"
    "strconv"
)

func main() {
    // execute the command and get the output
    cmd := exec.command("echo", "hello, where are you 1.1?")
    var out bytes.buffer
    cmd.stdout = &out
    err := cmd.run()
    if err != nil {
        log.fatal(err)
    }

    // extract the numerical values from the output using a regular expression
    re := regexp.mustcompile(`([0-9ee.+]*)`)
    //matches := re.findallstring(out.string(), -1)
    splits := re.split(out.string(), -1)
    fmt.println(splits)

}
登入後複製

我得到如下輸出::

[H l l o ,   w h r   a r   y o u   ? 
]
登入後複製

我認為正規表示式與語言相關,因此 python 中使用的 split() 函數對 golang 沒有幫助。使用了 regexp 套件中的多個 find*() 函數,但找不到可以提供上述 python 程式輸出的函數。

輸出字串數組的目標是分隔無法轉換為 float 的字符,如果字串可以解析為浮點數,我會計算移動平均值。

最後,我將所有內容結合起來並呈現輸出,例如 linux watch 命令。

您需要更多詳細資訊/背景嗎?我很樂意分享。

非常感謝您的幫忙!

解決方法

同時,我得到了一些適合我的用例的東西。它與 python 的格式不完全相同,但沒有空字串/字元。

我使用 splitfindallstring 函數來獲得所需的輸出。

// unfortunately go regex split doesn't work like python
    // so we construct the entire array with matched string (numericals)
    // and the split strings to combine the output
    splits := digitsre.split(string(out), -1)
    matches := digitsre.findallstring(string(out), -1)

    p := []string{}
    for i := 0; i < len(splits); i++ {
        p = append(p, matches[i])
        p = append(p, splits[i])
    }
登入後複製

透過上面的程式碼片段,我得到類似 ::

[H e l l o ,   w h e r e   a r e   y o u  1.1 ?]
登入後複製

我不太擅長 regex,不知何故,上面的方法適合我的用例。

說得輕鬆一點,我聽到同事開玩笑說,如果你在 regex 的幫助下解決問題,你最終會遇到兩個問題! ! !

以上是python 正規表示式 split 函數在 golang 中等效的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

oracle中split()函數用法 oracle中split()函數用法 May 07, 2024 pm 01:06 PM

SPLIT() 函數透過指定的分隔符號拆分字串為數組,傳回字串數組,其中每個元素都是原始字串中以分隔符號分隔的部分。用法包括:將逗號分隔的值清單拆分為陣列、從路徑中提取檔案名稱、將電子郵件地址拆分為使用者名稱和網域。

java怎麼對字串排序 java怎麼對字串排序 Apr 02, 2024 am 02:18 AM

Java 中對字串排序的方法:使用 Arrays.sort() 方法對字串陣列按升序排序。使用 Collections.sort() 方法對字串清單按升序排序。使用 Comparator 介面對字串進行自訂排序。

\0在c語言中是什麼意思 \0在c語言中是什麼意思 Apr 27, 2024 pm 10:54 PM

C 語言中,\0 是字串的結束標誌,稱為空字元或終止符。由於字串在記憶體中以位元組數組形式存儲,編譯器透過 \0 識別字串結束,確保正確處理字串。 \0 工作原理:編譯器遇到 \0 時停止讀取字符,之後的字符被忽略。 \0 自身不佔儲存空間。好處包括可靠的字串處理、提高效率(無需掃描整個陣列查找結束)以及方便比較和操作。

args在java中是什麼意思 args在java中是什麼意思 Apr 25, 2024 pm 10:15 PM

args 在 Java 中表示命令列參數,是一個字串數組,包含程式啟動時傳遞給它的參數列表。它僅在 main 方法中可用,其預設值為一個空數組,透過索引可以存取每個參數。 args 用於接收和處理命令列參數,從而在程式啟動時進行配置或提供輸入資料。

java中的args是什麼意思 java中的args是什麼意思 May 07, 2024 am 02:24 AM

args 是 Java 中 main 方法的特殊參數數組,用於取得命令列參數或外部輸入的字串數組。透過存取 args 數組,程式可以讀取這些參數,並根據需要進行處理。

PHP 函數中人工智慧技術的應用 PHP 函數中人工智慧技術的應用 May 01, 2024 pm 01:15 PM

AI技術已與PHP函數結合,增強了應用程式的功能。具體的AI應用包括:使用機器學習演算法對文本進行分類,如樸素貝葉斯。使用自然語言處理技術進行深入文本分析,如分詞和詞幹提取。

在C語言環境下如何對中文字元進行排序? 在C語言環境下如何對中文字元進行排序? Feb 18, 2024 pm 02:10 PM

如何在C語言程式設計軟體中實現中文字元排序功能?在現代社會,中文字元排序功能在許多軟體中都是不可或缺的功能之一。無論是在文字處理軟體、搜尋引擎或資料庫系統中,都需要對中文字元進行排序,以便更好地展示和處理中文文字資料。而在C語言程式設計中,如何實現中文字元排序功能呢?下面將簡要介紹一種方法。首先,為了在C語言中實作中文字元排序功能,我們需要使用到字串比較函數。然

C++ 函式對程式效能有哪些影響? C++ 函式對程式效能有哪些影響? Apr 12, 2024 am 09:39 AM

函数对C++程序性能的影响包括函数调用开销、局部变量和对象分配开销:函数调用开销:包括堆栈帧分配、参数传递和控制权转移,对小函数影响显著。局部变量和对象分配开销:大量局部变量或对象创建和销毁会导致堆栈溢出和性能下降。

See all articles