Hướng dẫn get specific value from string python - lấy giá trị cụ thể từ chuỗi python

Dưới đây là đầu ra được lưu trữ trong biến STR, tôi muốn trích xuất giá trị cardinality của bất cứ thứ gì, tôi đã trích xuất nó bằng cách đơn giản

str = response.text
0 nhưng mỗi khi tôi phải thay đổi giá trị chuỗi nếu giá trị cardinality sẽ tăng hoặc giảm.

Output:

{"cardinality":483,"timestamp":15369087280,"deltas":{"week_over_week":{"delta_fraction":0.047722318876,"last_week_value":146}}}

Được lưu trữ trong str:

str = response.text

Đầu ra dự kiến:

Active: 483

Hỏi ngày 14 tháng 9 năm 2018 lúc 8:01Sep 14, 2018 at 8:01

3

Bạn có thể chuyển chuỗi của mình dưới dạng JSON để có được từ điển, sau đó chỉ cần đọc ra giá trị:

import json
s = '{"cardinality": 483, "timestamp": 15369087280, "deltas": {"week_over_week": {"delta_fraction": 0.047722318876, "last_week_value": 146}}}'
d = json.loads[s]
print[d['cardinality']]
# 483

Đã trả lời ngày 14 tháng 9 năm 2018 lúc 8:05Sep 14, 2018 at 8:05

101101101

8.1763 Huy hiệu vàng38 Huy hiệu bạc65 Huy hiệu Đồng3 gold badges38 silver badges65 bronze badges

1

Sử dụng AST:

>>> s='{"cardinality":483,"timestamp":15369087280,"deltas":{"week_over_week":{"delta_fraction":0.047722318876,"last_week_value":146}}}'
>>> import ast
>>> 'Active: %s'%ast.literal_eval[s]['cardinality']
'Active: 483'
>>> 

Như @101 đã nói cũng có thể sử dụng

str = response.text
1:

>>> import json
>>> s='{"cardinality":483,"timestamp":15369087280,"deltas":{"week_over_week":{"delta_fraction":0.047722318876,"last_week_value":146}}}'
>>> 'Active: %s'%json.loads[s]['cardinality']
'Active: 483'
>>> 

Đã trả lời ngày 14 tháng 9 năm 2018 lúc 8:04Sep 14, 2018 at 8:04

U12-ForwardU12-ForwardU12-Forward

66.7K13 Huy hiệu vàng79 Huy hiệu bạc99 Huy hiệu đồng13 gold badges79 silver badges99 bronze badges

Có 2 cách:

1.

In [10]: import ast
In [11]: s='{"cardinality":483,"timestamp":15369087280,"deltas":{"week_over_week":{"delta_fraction":0.047722318876,"last_week_value":146}}}'
In [12]: ast.literal_eval[s]
In [13]: %timeit ast.literal_eval[s]['cardinality']
10000 loops, best of 3: 29.4 µs per loop

2.

In [14]: import json
In [15]: s='{"cardinality":483,"timestamp":15369087280,"deltas":{"week_over_week":{"delta_fraction":0.047722318876,"last_week_value":146}}}'
In [16]: %timeit json.loads[s]['cardinality']
100000 loops, best of 3: 5.73 µs per loop

Vì vậy, bạn nên sử dụng

str = response.text
2 vì nó tương đối nhanh hơn
str = response.text
3

Đã trả lời ngày 14 tháng 9 năm 2018 lúc 8:51Sep 14, 2018 at 8:51

Vishvajit pathakvishvajit pathakVishvajit Pathak

3.0411 Huy hiệu vàng21 Huy hiệu bạc16 Huy hiệu đồng1 gold badge21 silver badges16 bronze badges

Tôi đang xây dựng một công cụ trong Python và tôi có một câu hỏi:

Tôi có một chuỗi như "Lớp nhóm Denver.dwg \ Denver.dwg chú thích".

Làm cách nào để gán cho một biến [cho in sau] chỉ phần đầu tiên của chuỗi, "denver.dwg" ?? Tôi cần cung cấp một giải pháp chung, vì tên thành phố khác nhau từ trường hợp này sang trường hợp khác [có thể ngắn hơn hoặc dài hơn] và do đó, việc đếm các địa điểm cho đến khi G của DWG [10 địa điểm] sẽ không giúp được.

[Tôi đang viết công cụ Python cho ArcGIS 9.3.1]

Polygeo ♦

64.3K27 Huy hiệu vàng102 Huy hiệu bạc315 Huy hiệu đồng27 gold badges102 silver badges315 bronze badges

Hỏi ngày 30 tháng 12 năm 2010 lúc 14:58Dec 30, 2010 at 14:58

3

Mã bên dưới tìm kiếm sự xuất hiện đầu tiên của chuỗi ".dwg" và gán một chuỗi con mới [chứa các ký tự lên đến và bao gồm cả sự xuất hiện đó].

text = "Denver.dwg Group Layer\\Denver.dwg Annotation"
ext = ".dwg"

fileNameOnly = text[:text.find[ext] + len[ext]]
print fileNameOnly

Đây là thao tác chuỗi python rất cơ bản. Có rất nhiều tài liệu tham khảo nhanh sẽ giúp bạn với các chức năng được sử dụng phổ biến nhất này, ví dụ như cơ bản Python, Phần 5: Chuỗi.

Đã trả lời ngày 30 tháng 12 năm 2010 lúc 15:12Dec 30, 2010 at 15:12

Petr Krebspetr KrebsPetr Krebs

102K1 Huy hiệu vàng21 Huy hiệu bạc32 Huy hiệu đồng1 gold badge21 silver badges32 bronze badges

Bạn sẽ có thể sử dụng phương thức chuỗi này.find, xem ví dụ của tôi bên dưới.

s = 'Denver.dwg Group Layer/Denver.dwg Annotation"'

# this returns lowest index of first occurence of dwg
# in this case 7
idx = s.find['dwg']
print idx

# take this index and add 3 for 'dwg'
# get desired string
subs = s[:idx+3]
print subs

Đã trả lời ngày 30 tháng 12 năm 2010 lúc 15:19Dec 30, 2010 at 15:19

user890user890user890

5.6111 Huy hiệu vàng40 Huy hiệu bạc69 Huy hiệu đồng1 gold badge40 silver badges69 bronze badges

2

str = "denver.dwg Lớp nhóm \ denver.dwg chú thích"

Bạn có thể sử dụng Split

  • c = str.split ["\\"]

['Lớp nhóm Denver.DWG', 'Denver.dwg chú thích']

Kết quả là một danh sáchlist

D = C [0] .Split ["."] # Thuật ngữ đầu tiên của danh sách IE 'Lớp nhóm Denver.DWG'

['Denver', 'Lớp nhóm DWG']]

D [0] # Thuật ngữ đầu tiên của danh sách

'Denver'

  • hoặc e = str.split [""]

['Denver.dwg', 'Nhóm', 'Layer \ Denver.dwg', 'chú thích']]]]

  • hoặc f = str.split [""] [0]

'Denver.dwg'

g = f.split ["."]

['Denver', 'DWG']]

g[0]

'Denver'

Nhìn vào việc lặn vào Python

Đã trả lời ngày 3 tháng 1 năm 2011 lúc 9:38Jan 3, 2011 at 9:38

Bài Viết Liên Quan

Chủ Đề