簡體   English   中英

從字符串中刪除字符並創建子字符串的最pythonic方法是什么?

[英]What is the most pythonic way to remove characters from a string and create substrings?

假設我們有這個字符串: SIC0575(1, 2)

SIC0575長度 = 7,但它可以動態變化,所以我們假設長度 = N

(1, 2)假設 (0~9, 0~9)

我想從這個字符串創建子字符串。

期望的結果:

val1 = SIC0575

val2 = 1

val3 = 2

我不熟悉 Python,我想知道哪種方式是最優雅的/pythonic 方式來實現這一點。 有沒有內置的 function 可以做到這一點?

我嘗試過的(它有效,但一點也不優雅):

        data = "SIC0575(1, 2)"
        aux = data.split("(")
        val1 = aux[0]
        aux2 = aux[1].split(",")
        val2 = aux2[0]
        val3 = aux2[1][:-1]

正則表達式是你的朋友:

import re
s = "SIC0575(1, 2)"
val1, val2, val3 = re.fullmatch(r"(.*?)\((\d), (\d)\)", s).groups()

對於您的用例,我將 go 與index

獲取左括號(index ,並取第一個切片為aux ,並使用astval1val2

import ast

data = "SIC0575(1, 2)"
index = data.find('(')
aux = data[:index]
val1, val2 = ast.literal_eval(data[index:])

OUTPUT

print(aux, v1, v2)
SIC0575 1 2

我會 go 如下所示。

import re
stringEx = [_.replace(' ','') for _ in re.split('\)|\(|,',"SIC0575(1, 2)")[:-1]]
var1,var2,var3 = string[0],int(stringEx[1]),int(stringEx[2])

出去

val1 = SIC0575

val2 = 1

val3 = 2

您可以使用正則表達式來匹配字符串。

import re

data = "SIC0575(1, 2)"
pattern = re.compile(r'(.*)\(([0-9]), ([0-9])\)')
val1, val2, val3 = pattern.match(data).groups()
print(val1, val2, val3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM