Rumah > Artikel > pembangunan bahagian belakang > fungsi split ekspresi biasa python setara dalam golang
Dalam bidang pengaturcaraan, ungkapan biasa ialah alat yang berkuasa untuk memadankan dan memproses rentetan. Dalam Python, fungsi split ialah fungsi ungkapan biasa yang biasa digunakan untuk memisahkan rentetan kepada subrentetan. Walau bagaimanapun, bagi pembangun yang menggunakan Golang, mereka mungkin tertanya-tanya bagaimana untuk mencapai fungsi yang sama dalam Golang sebagai fungsi split dalam Python. Dalam artikel ini, editor PHP Zimo akan memperkenalkan anda kepada cara menggunakan fungsi pemisahan ungkapan biasa secara setara di Golang untuk menggunakan alat berkuasa ini dengan lebih baik.
Saya mempunyai kod python berikut untuk dipadankan dengan ungkapan biasa::
import re digits_re = re.compile("([0-9ee.+]*)") p = digits_re.split("hello, where are you 1.1?") print(p)
Ia memberikan output ini::
['', '', 'h', 'e', '', '', 'l', '', 'l', '', 'o', '', ',', '', ' '、''、'w'、''、'h'、'e'、''、''、'r'、'e'、''、''、' '、''、'a' , '', 'r', 'e', '', '', ' ', '', 'y', '', 'o', '', 'u', '', ' ', '1.1 ', '', '', '?', '', '']
Saya cuba mendapatkan output di atas menggunakan 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) }
Saya mendapat output berikut::
[H l l o , w h r a r y o u ? ]
Saya rasa ungkapan biasa bergantung kepada bahasa, jadi fungsi split()
yang digunakan dalam python tidak membantu split()
函数对 golang
没有帮助。使用了 regexp
包中的多个 find*()
. Menggunakan beberapa fungsi find*()
daripada pakej regexp
, tetapi tidak dapat mencari fungsi yang akan memberikan output program python di atas.
Matlamat untuk mengeluarkan tatasusunan rentetan adalah untuk memisahkan aksara yang tidak boleh ditukar kepada float
dan jika rentetan itu boleh dihuraikan sebagai apungan, saya mengira purata bergerak.
Akhir sekali, saya menggabungkan semuanya dan membentangkan output seperti arahan linux watch
.
Adakah anda memerlukan butiran lanjut/latar belakang? Saya gembira untuk berkongsi.
Terima kasih banyak atas bantuan anda!
Sementara itu, saya mendapat sesuatu yang sesuai untuk bekas penggunaan saya. Ia bukan format yang sama seperti python
, tetapi tidak mempunyai rentetan/karakter kosong.
Saya menggunakan fungsi split
和 findallstring
untuk mendapatkan output yang diingini.
// 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]) }
Dengan coretan kod di atas, saya mendapat sesuatu seperti ::
[H e l l o , w h e r e a r e y o u 1.1 ?]
Saya tidak begitu mahir dalam regex
, dan entah bagaimana kaedah di atas berfungsi untuk kes penggunaan saya.
Secara ringkasnya, saya mendengar rakan sekerja saya bergurau bahawa jika anda menyelesaikan masalah dengan bantuan regex
, anda akan menghadapi dua masalah! ! !
Atas ialah kandungan terperinci fungsi split ekspresi biasa python setara dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!