Hướng dẫn python extract tuple from string - python trích xuất tuple từ chuỗi

79

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Nói rằng tôi có một chuỗi có cùng một dạng một tuple, ví dụ, "(1,2,3,4,5)". Cách dễ nhất để chuyển đổi nó thành một tuple thực tế là gì? Một ví dụ về những gì tôi muốn làm là:

tup_string = "(1,2,3,4,5)"
tup = make_tuple(tup_string)

Chỉ cần chạy

>>> from ast import literal_eval as make_tuple
>>> make_tuple("(1,2,3,4,5)")
(1, 2, 3, 4, 5)
0 trên chuỗi làm cho toàn bộ một thứ lớn, trong khi những gì tôi muốn làm là hiểu chuỗi là một tuple. Tôi biết tôi có thể sử dụng một regex cho việc này, nhưng tôi đã hy vọng có một cách ít tốn kém hơn. Ý tưởng?

Hướng dẫn python extract tuple from string - python trích xuất tuple từ chuỗi

Niklas B.

90,6K17 Huy hiệu vàng191 Huy hiệu bạc2222 Huy hiệu đồng17 gold badges191 silver badges222 bronze badges

hỏi ngày 18 tháng 3 năm 2012 lúc 23:03Mar 18, 2012 at 23:03

1

Nó đã tồn tại!

>>> from ast import literal_eval as make_tuple
>>> make_tuple("(1,2,3,4,5)")
(1, 2, 3, 4, 5)

Tuy nhiên, hãy chú ý đến trường hợp góc:

>>> make_tuple("(1)")
1
>>> make_tuple("(1,)")
(1,)

Nếu định dạng đầu vào của bạn hoạt động khác với Python ở đây, bạn cần xử lý riêng trường hợp đó hoặc sử dụng một phương pháp khác như

>>> from ast import literal_eval as make_tuple
>>> make_tuple("(1,2,3,4,5)")
(1, 2, 3, 4, 5)
1.

Đã trả lời ngày 18 tháng 3 năm 2012 lúc 23:05Mar 18, 2012 at 23:05

Niklas B.Niklas B.Niklas B.

90,6K17 Huy hiệu vàng191 Huy hiệu bạc2222 Huy hiệu đồng17 gold badges191 silver badges222 bronze badges

5

hỏi ngày 18 tháng 3 năm 2012 lúc 23:03

Nó đã tồn tại!have more control on what gets converted you can also disassemble the string, convert the values and recreate the tuple.

Tuy nhiên, hãy chú ý đến trường hợp góc:

eg = '(102,117,108)'
eg_tuple = map(int, eg.replace('(','').replace(')','').split(',')))

Nếu định dạng đầu vào của bạn hoạt động khác với Python ở đây, bạn cần xử lý riêng trường hợp đó hoặc sử dụng một phương pháp khác như

>>> from ast import literal_eval as make_tuple
>>> make_tuple("(1,2,3,4,5)")
(1, 2, 3, 4, 5)
1.


Đã trả lời ngày 18 tháng 3 năm 2012 lúc 23:05

import re
eg = '(102,117,108)'
et_tuple = tuple(map(int, re.findall(r'[0-9]+', eg)))

Niklas B.Niklas B.Dec 13, 2017 at 23:34

Tôi sẽ khuyên bạn nên sử dụng

>>> from ast import literal_eval as make_tuple
>>> make_tuple("(1,2,3,4,5)")
(1, 2, 3, 4, 5)
2.jojo

Nếu bạn không thoải mái với

>>> from ast import literal_eval as make_tuple
>>> make_tuple("(1,2,3,4,5)")
(1, 2, 3, 4, 5)
2 hoặc muốn có nhiều quyền kiểm soát hơn về những gì được chuyển đổi, bạn cũng có thể tháo rời chuỗi, chuyển đổi các giá trị và tạo lại tuple.2 gold badges48 silver badges69 bronze badges

1

Nghe có vẻ phức tạp hơn, thực sự, nó là một lớp lót:

def parse_tuple(string):
    try:
        s = eval(string)
        if type(s) == tuple:
            return s
        return
    except:
        return

Điều này sẽ ném

>>> from ast import literal_eval as make_tuple
>>> make_tuple("(1,2,3,4,5)")
(1, 2, 3, 4, 5)
4 nếu bất kỳ phần tử (chuỗi) nào trong bộ tuple không thể chuyển đổi thành
>>> from ast import literal_eval as make_tuple
>>> make_tuple("(1,2,3,4,5)")
(1, 2, 3, 4, 5)
5, ví dụ như
>>> from ast import literal_eval as make_tuple
>>> make_tuple("(1,2,3,4,5)")
(1, 2, 3, 4, 5)
6 trong chuỗi:
>>> from ast import literal_eval as make_tuple
>>> make_tuple("(1,2,3,4,5)")
(1, 2, 3, 4, 5)
7.

print parse_tuple("('A', 'B', 'C')")

Điều tương tự có thể đạt được với Regex:Jun 14, 2017 at 6:46

Hướng dẫn python extract tuple from string - python trích xuất tuple từ chuỗi

Đã trả lời ngày 13 tháng 12 năm 2017 lúc 23:34Shameem

Jojojojo16 silver badges20 bronze badges

9.4762 Huy hiệu vàng48 Huy hiệu bạc69 Huy hiệu đồng

((2, 'C/C++', 0, 'clang_cpp'), (3, 'Python相关', 0, 'python'))

Bạn có thể phân tích chuỗi của mình mà không cần

>>> from ast import literal_eval as make_tuple
>>> make_tuple("(1,2,3,4,5)")
(1, 2, 3, 4, 5)
8

Hàm này trả về

>>> from ast import literal_eval as make_tuple
>>> make_tuple("(1,2,3,4,5)")
(1, 2, 3, 4, 5)
9 nếu phân tích thành công. Nếu không, hãy trả lại
>>> make_tuple("(1)")
1
>>> make_tuple("(1,)")
(1,)
0.

  1. Đã trả lời ngày 14 tháng 6 năm 2017 lúc 6:46
  2. Shameemshameem
  3. 2.47216 Huy hiệu bạc20 Huy hiệu đồng

Chúng ta cũng có thể phân tích nó bởi chính chúng ta. Giả sử chúng ta đã trả lại bởi Python như dưới đây:

function parseTuple(t){
    var lc = "(";
    var rc = ")";
    var lc_level = 0;
    var rc_level = 0;
    var last_lc = 0;
    var last_rc = 0;
    var result = [];
    for(i=0;i<t.length;i++){
        if(t[i] == lc){
            lc_level++;
            last_lc = i;
        }else if(t[i] == rc){
            rc_level++;
            last_rc = i;
        }
        if(rc_level == 1){
            var substr = t.slice(last_lc+1,last_rc);
            var data = substr.split(",");
            result.push(data);
            lc_level--;
            rc_level--;
            i = 0;
            t = t.slice(0,last_lc) + t.substring(last_rc+1);
        }
        if(lc_level == rc_level && lc_level==0){
            break;
        }
    }
    return result;
}

Đây là cách chúng tôi làm điều đóAug 22, 2017 at 3:50

Hướng dẫn python extract tuple from string - python trích xuất tuple từ chuỗi

Chúng tôi tiếp tục đọc các ký tự trong chuỗi tuple nhưng lưu trữ vị trí cuối cùng bên trái và có bao nhiêu dấu chấm phẩy chúng tôi gặp (chúng tôi có thể gọi nó là cấp độ bán nguyệt, vì vậy đối với dấu chấm phẩy phải), bất cứ khi nào chúng tôi gặp một dấu chấm phẩy phải, chúng tôi Những điều dưới đây:hcnak

Lấy một chuỗi con từ dấu chấm phẩy cuối cùng đến bán kết bên phải hiện tại.6 silver badges17 bronze badges

Làm thế nào để bạn nhận được một tuple từ một chuỗi trong Python?

Khi được yêu cầu chuyển đổi một chuỗi thành một tuple, phương thức 'bản đồ', phương thức 'tuple', phương thức 'int' và phương thức 'chia' có thể được sử dụng. Hàm bản đồ áp dụng một chức năng/hoạt động nhất định cho mọi mục trong một mục được lặp lại (chẳng hạn như danh sách, tuple). Nó trả về một danh sách là kết quả.the 'map' method, the 'tuple' method, the 'int' method, and the 'split' method can be used. The map function applies a given function/operation to every item in an iterable (such as list, tuple). It returns a list as the result.

Làm thế nào để bạn phân tích một chuỗi thành một tuple?

Phương thức số 1: Sử dụng map () + int + split () + tuple () Phương thức này có thể được sử dụng để giải quyết nhiệm vụ cụ thể này.Trong đó, chúng tôi chỉ chia từng phần tử của chuỗi và chuyển đổi thành danh sách và sau đó chúng tôi chuyển đổi danh sách thành kết quả.Using map() + int + split() + tuple() This method can be used to solve this particular task. In this, we just split each element of string and convert to list and then we convert the list to resultant tuple.

Bạn có thể cắt một tuple python?

Chúng ta có thể sử dụng cắt trong các bộ dữ liệu Tôi giống như cách chúng ta sử dụng trong các chuỗi và danh sách.Cắt tuple về cơ bản được sử dụng để có được một loạt các mặt hàng.Hơn nữa, chúng tôi thực hiện cắt Tuple bằng cách sử dụng toán tử cắt.Chúng ta có thể đại diện cho toán tử cắt trong cú pháp [Bắt đầu: Dừng: Bước]. I'm the same way as we use in strings and lists. Tuple slicing is basically used to obtain a range of items. Furthermore, we perform tuple slicing using the slicing operator. We can represent the slicing operator in the syntax [start:stop:step].

Làm thế nào để bạn giải nén một tuple trong một danh sách trong Python?

Những điều cơ bản của việc giải nén một tuple và một danh sách.Nếu bạn viết các biến ở phía bên trái được phân tách bằng dấu phẩy, các phần tử của một tuple hoặc danh sách ở phía bên phải được gán cho mỗi biến.....
Giải nén với _ (nhấn mạnh) theo quy ước, các giá trị không cần thiết có thể được gán cho nhấn mạnh _ trong Python.....
Giải nén với * (dấu hoa thị).