Hướng dẫn how do you filter characters in python? - làm cách nào để bạn lọc các ký tự trong python?

Tôi cần tạo một chức năng lấy hai chuỗi làm imnput và trả về một bản sao của str 1 với tất cả các ký tự từ str2 bị xóa.

Điều đầu tiên là lặp lại qua Str1 với một vòng lặp, sau đó so sánh với str2, để thực hiện phép trừ tôi nên tạo một chuỗi thứ 3 để lưu trữ đầu ra nhưng tôi hơi lạc sau đó.

def filter_string(str1, str2):
    str3 = str1   
    for character in str1:
       if character in str2:
           str3 = str1 - str2
    return str3

Đây là những gì tôi đã chơi với nhưng tôi không hiểu tôi nên tiến hành như thế nào.

Hỏi ngày 11 tháng 8 năm 2013 lúc 15:32Aug 11, 2013 at 15:32

Hướng dẫn how do you filter characters in python? - làm cách nào để bạn lọc các ký tự trong python?

0

Chỉ cần sử dụng

string.translate(s, table[, deletechars])
1:

In [4]: 'abcdefabcd'.translate(None, 'acd')
Out[4]: 'befb'

Từ tài liệu:

string.translate(s, table[, deletechars])

Xóa tất cả các ký tự từ

string.translate(s, table[, deletechars])
2 có trong
string.translate(s, table[, deletechars])
3 (nếu có), sau đó dịch các ký tự bằng cách sử dụng
string.translate(s, table[, deletechars])
4, phải là chuỗi 256 ký tự đưa ra bản dịch cho mỗi giá trị ký tự, được lập chỉ mục bởi thứ tự của nó. Nếu
string.translate(s, table[, deletechars])
4 không có, thì chỉ có bước xóa ký tự được thực hiện.
(if present), and then translate the characters using
string.translate(s, table[, deletechars])
4, which must be a 256-character string giving the translation for each character value, indexed by its ordinal. If
string.translate(s, table[, deletechars])
4 is None, then only the character deletion step is performed.

Nếu - với mục đích giáo dục - bạn muốn tự mã hóa nó, bạn có thể sử dụng một cái gì đó như:

''.join(c for c in str1 if c not in str2)

Đã trả lời ngày 11 tháng 8 năm 2013 lúc 15:34Aug 11, 2013 at 15:34

NPENPENPE

475K105 Huy hiệu vàng931 Huy hiệu bạc1003 Huy hiệu Đồng105 gold badges931 silver badges1003 bronze badges

3

Sử dụng

string.translate(s, table[, deletechars])
6:

def filter_string(str1, str2):
    for c in str2:
        str1 = str1.replace(c, '')
    return str1

Hoặc một danh sách đơn giản hiểu:

''.join(c for c in str1 if c not in str2)

Konstantin

2.7353 huy hiệu vàng21 Huy hiệu bạc23 Huy hiệu đồng3 gold badges21 silver badges23 bronze badges

Đã trả lời ngày 11 tháng 8 năm 2013 lúc 15:34Aug 11, 2013 at 15:34

NPENPElecodesportif

475K105 Huy hiệu vàng931 Huy hiệu bạc1003 Huy hiệu Đồng8 gold badges37 silver badges57 bronze badges

0

Trong bài viết này, chúng tôi sẽ thảo luận khi nào & làm thế nào để sử dụng chức năng Python từ () với Lambda

Python cung cấp một phương thức để lọc nội dung từ một chuỗi nhất định có thể là một danh sách, chuỗi hoặc tuple, v.v.

filter(function, iterable)

Tranh luận:

  • Một chuỗi có thể được lọc.
  • Một hàm chấp nhận một đối số và trả về Bool, tức là đúng hoặc sai dựa trên logic của nó.

Returns:

  • Một chuỗi mới của nội dung được lọc.

Logic: Filter () lặp lại trên tất cả các phần tử trong chuỗi và đối với mỗi phần tử, nó gọi hàm gọi lại đã cho. Nếu hàm này trả về sai thì phần tử đó bị bỏ qua, trong khi các phần tử mà nó trả về true sẽ được thêm vào một danh sách mới. Cuối cùng, nó trả về một danh sách mới với nội dung được lọc dựa trên chức năng được truyền cho nó dưới dạng đối số.
filter() iterates over all elements in the sequence and for each element it calls the given callback function. If this function returns False then that element is skipped, whereas elements for which it returned True are added into a new list. In the end it returns a new list with filtered contents based on the function passed to it as argument.

Hãy để hiểu biết bởi các ví dụ

Quảng cáo

Lọc danh sách các chuỗi trong Python bằng Filter ()

Giả sử chúng ta có một danh sách các chuỗi, tức là.

# List of string
listOfStr = ['hi', 'this' , 'is', 'a', 'very', 'simple', 'string' , 'for', 'us']

Bây giờ, hãy để lọc bộ lọc nội dung của danh sách và giữ các chuỗi có độ dài 2 chỉ bằng bộ lọc (), tức là

filteredList = list(filter(isOfLengthFour , listOfStr))

print('Filtered List : ', filteredList)

Đầu ra:

Filtered List :  ['hi', 'is', 'us']

Vì vậy, Filter () đã lặp lại trên tất cả các chuỗi trong danh sách đã cho và được gọi là isoflengthfour () cho mỗi phần tử chuỗi. Các phần tử chuỗi mà isofLpmfour () trả về đúng đã được giữ theo một chuỗi riêng biệt và được trả về.filter() iterated over all the strings in given list and the called isOfLengthFour() for each string element. String elements for which isOfLengthFour() returned True were kept in a separate sequence and returned.

Sử dụng Filter () với hàm Lambda

Như bạn có thể thấy rằng chúng tôi đã tạo một hàm riêng biệt isoflengthfour () và chuyển nó cho chức năng Filter (). Chúng ta hoàn toàn có thể tránh việc tạo ra các loại chức năng nhỏ một lần này bằng cách sử dụng chức năng Lambda. Hãy để thông qua một hàm Lambda để lọc () để chọn các chuỗi có độ dài 2 chỉ từ danh sách, tức làisOfLengthFour() and passed it to filter() function. We can completely avoid the creation of these kind of one time small function by using lambda function.
Let’s pass a lambda function to filter() for selecting strings with length 2 only from the list i.e.

In [4]: 'abcdefabcd'.translate(None, 'acd')
Out[4]: 'befb'
0

Đầu ra:

Filtered List :  ['hi', 'is', 'us']

Nó hoạt động giống như ví dụ trước nhưng chúng tôi đã tránh tạo chức năng bổ sung bằng cách sử dụng chức năng Lambda.

Bộ lọc các ký tự từ một chuỗi trong Python bằng Filter ()

Chúng ta cũng có thể sử dụng Filter () với một chuỗi như một chuỗi có thể lặp lại và có thể lọc các ký tự từ nó.

Giả sử chúng ta có một chuỗi, tức là.

In [4]: 'abcdefabcd'.translate(None, 'acd')
Out[4]: 'befb'
2

Bây giờ, hãy để sử dụng bộ lọc () để xóa hoặc lọc tất cả các lần xuất hiện của các ký tự ‘S và’ A, từ chuỗi trên, tức là.

In [4]: 'abcdefabcd'.translate(None, 'acd')
Out[4]: 'befb'
3

Đầu ra:

In [4]: 'abcdefabcd'.translate(None, 'acd')
Out[4]: 'befb'
4

Filter () về cơ bản đã trả lại một danh sách các ký tự từ chuỗi trên bằng cách lọc tất cả các lần xuất hiện của ‘Siêu &‘ a. Sau đó, bằng cách sử dụng tham gia (), chúng tôi đã tham gia danh sách các ký tự được lọc vào một chuỗi.

Lọc một mảng trong python bằng bộ lọc ()

Giả sử chúng ta có hai mảng, tức là.

In [4]: 'abcdefabcd'.translate(None, 'acd')
Out[4]: 'befb'
5

Bây giờ chúng tôi muốn lọc nội dung trong Array1, tức là bằng cách xóa các số khỏi Array1 phổ biến trong Array1 và Array2. Ví dụ: mảng mới nên được,array1 i.e. by removing numbers from array1 which are common in array1 and array2. For example new array should be,

In [4]: 'abcdefabcd'.translate(None, 'acd')
Out[4]: 'befb'
6

Bây giờ, hãy để xem cách thực hiện điều đó bằng cách sử dụng chức năng Filter () và Lambda

In [4]: 'abcdefabcd'.translate(None, 'acd')
Out[4]: 'befb'
7

Đầu ra:

In [4]: 'abcdefabcd'.translate(None, 'acd')
Out[4]: 'befb'
8

Về cơ bản, nó đã lọc ra các yếu tố từ Array1 có mặt trong Array2.array1 which were present in array2.

Ví dụ hoàn chỉnh như sau,

In [4]: 'abcdefabcd'.translate(None, 'acd')
Out[4]: 'befb'
9

Output:

string.translate(s, table[, deletechars])
0