Hướng dẫn python question mark in string - dấu chấm hỏi python trong chuỗi

4

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.

Tôi có một loạt các bài đăng văn bản (df ['posttext']). Mỗi hàng trong loạt bài này là chuỗi. Tôi muốn biết cái nào chứa dấu hỏi.

Khi tôi cố gắng

df['posttext'].str.contains("?")

Tôi nhận được cái này:

error: nothing to repeat at position 0.

Hướng dẫn python question mark in string - dấu chấm hỏi python trong chuỗi

Đã hỏi ngày 13 tháng 2 năm 2019 lúc 20:35Feb 13, 2019 at 20:35

Phương pháp contains này mong đợi một biểu thức chính quy. Bạn có thể tắt điều đó bằng cách cung cấp một đối số từ khóa được gọi là regex:

df['posttext'].str.contains("?", regex=False)

Đã trả lời ngày 13 tháng 2 năm 2019 lúc 20:39Feb 13, 2019 at 20:39

Hướng dẫn python question mark in string - dấu chấm hỏi python trong chuỗi

L3viathanL3viathanL3viathan

25.9k2 Huy hiệu vàng55 Huy hiệu bạc74 Huy hiệu đồng2 gold badges55 silver badges74 bronze badges

0

Bạn có thể thoát khỏi dấu hỏi để buộc nó tìm kiếm nhân vật theo nghĩa đen

df['posttext'].str.contains("\?")

Đã trả lời ngày 13 tháng 2 năm 2019 lúc 20:44Feb 13, 2019 at 20:44

G. Andersong. AndersonG. Anderson

5.5522 Huy hiệu vàng11 Huy hiệu bạc19 Huy hiệu đồng2 gold badges11 silver badges19 bronze badges

2


Giới thiệu

Dấu câu hỏi làm cho mã thông báo trước đó trong biểu thức thông thường tùy chọn. Ví dụ: Colou? R là bổ sung cho cả màu sắc và màu sắc. Một bộ định lượng là những gì dấu hỏi được gọi là.

Bạn có thể tạo nhiều mã thông báo tùy chọn bằng cách kết hợp nhiều mã thông báo trong ngoặc đơn và thêm dấu hỏi sau bộ dấu ngoặc đơn cuối cùng. Giống như Nov (Ember)? Các trận đấu giữa tháng 11 và tháng 11.

Sử dụng nhiều dấu hỏi, bạn có thể tạo một biểu thức thông thường phù hợp với một loạt các tùy chọn. Tháng 2)? 23 (RD)? Các trận đấu ngày 23 tháng 2, ngày 23 tháng 2, ngày 23 tháng 2 và ngày 23 tháng 2.

Niềng răng xoăn cũng có thể được sử dụng để làm một cái gì đó tùy chọn. Tương đương của colou? R là colou {0,1} r. Cả Posix Bre và Gnu Bre đều không tương thích với cái khác. Niềng răng xoăn cần dấu gạch chéo ngược để truyền đạt ý nghĩa cụ thể của các hương vị sau: Colou \ {0,1 \} r

Khái niệm Regex quan trọng: Sự tham lam

Metacharacter tham lam đầu tiên mà khóa học này giới thiệu là dấu hỏi. Động cơ Regex có hai tùy chọn để đáp ứng với dấu hỏi: hoặc cố gắng khớp phần mà dấu câu hỏi liên quan hoặc không cố gắng khớp với nó. Động cơ luôn cố gắng để phù hợp với thành phần đó. Động cơ sẽ không cố gắng bỏ qua phần mà dấu câu hỏi áp dụng cho trừ khi điều này khiến biểu thức hoàn toàn chính quy bị hỏng.

Kết quả là, khi nào Regex ngày 23 tháng 2 (RD)? Được áp dụng cho văn bản hôm nay là ngày 23 tháng 2 năm 2003, trận đấu luôn diễn ra vào ngày 23 tháng 2 và không bao giờ ngày 23 tháng 2. Bằng cách thêm một dấu hỏi khác sau lần đầu tiên, bạn có thể làm cho câu hỏi đánh dấu lười biếng (tức là, tắt sự tham lam).

Cú pháp được sử dụng

re.findall(): The re.findall(pattern, string) method finds all pattern
occurrences in the string and returns a list of all matching substrings.

The first parameter is the regular expression pattern "aa[cde]?". The string to
be checked for patterns is the second parameter. Simply put, you're looking for
patterns that begin with two 'a' characters and one optional character that
might be a 'c', 'd', or 'e.

Thí dụ

import re result1 = re.findall('aa[cde]?', 'aacde aa aadcde') result2 = re.findall('aa?', 'accccacccac') result3 = re.findall('[cd]?[cde]?', 'ccc dd ee') print(result1) print(result2) print(result3)

Đầu ra

['aac', 'aa', 'aad']
['a', 'a', 'a']
['cc', 'c', '', 'dd', '', 'e', 'e', '']

Giải thích mã

Ba chuỗi con phù hợp được trả về bằng phương thức findall () -

Đầu tiên, mẫu được đáp ứng với chuỗi "AAC." Sau khi Python ăn bộ con phù hợp, phần phụ vẫn là "de aa aadcde." Ngoài ra, chuỗi "AA" phù hợp với mẫu. Nó được tiêu thụ bởi Python, chỉ để lại "AADCDE". Thứ ba, mẫu trong chuỗi con cuối cùng khớp với chuỗi "AAD". Những gì còn lại là "CDE", không còn có một chuỗi con phù hợp.

Nhìn vào bên trong động cơ Regex

Hãy để áp dụng biểu thức thông thường Colou? R cho chuỗi. Đại tá thích màu xanh lá cây.

Theo nghĩa đen C là mã thông báo đầu tiên trong Regex. C ở Đại tá là nơi đầu tiên mà nó phù hợp chính xác. Động cơ tiếp tục chạy và phát hiện ra rằng L khớp với L, một o khác khớp với O và O khớp với o. Động cơ sau đó xác định nếu u và n bằng nhau. Nó thất bại. Tuy nhiên, dấu câu hỏi hướng dẫn động cơ Regex thiếu nhân vật mà U được cho phép. Kết quả là, động cơ chuyển sang mã thông báo Regex tiếp theo, r. Tuy nhiên, điều này cũng không phù hợp với n. Bây giờ, động cơ chỉ có thể kết luận rằng biểu thức hoàn toàn chính quy, bắt đầu bằng C ở Đại tá, không thể được khớp để khớp C với O đầu tiên ở Đại tá, động cơ khởi động lại.

o, l và o khớp với các ký tự sau sau một chuỗi thất bại và c khớp với màu của c. Động cơ bây giờ xác định nếu U và R khớp. Nó thất bại. Một lần nữa, không có vấn đề. Động cơ có thể tiếp tục với R vì dấu hỏi. Động cơ nói rằng Regex phù hợp với màu sắc trong văn bản của chúng tôi vì nó khớp với r.

Sự kết luận

Python là A? Trình định lượng khớp với số 0 hoặc một phiên bản của A khi được áp dụng cho biểu thức thông thường A. Cụm từ thông thường "Hey?", Chẳng hạn, khớp với các chuỗi "anh ta" và "Hey", nhưng không phải là chuỗi trống "." Đây là trường hợp vì? định lượng chỉ áp dụng cho regex xuất hiện trước nó, 'y,' không phải cho toàn bộ regex ', hey'.

Hướng dẫn python question mark in string - dấu chấm hỏi python trong chuỗi

Cập nhật vào ngày 20 tháng 9 năm 2022 07:15:56

  • Câu hỏi và câu trả lời liên quan
  • Tại sao chúng ta sử dụng phương thức re.compile () trong biểu thức thông thường Python?
  • Làm thế nào để chúng ta sử dụng các nhóm được đặt tên biểu thức thông thường Python?
  • Làm thế nào để chúng ta sử dụng phương thức re.finditer () trong biểu thức chính quy python?
  • Tại sao chúng ta nên sử dụng toàn bộ chuỗi trong biểu thức thông thường Java
  • Làm thế nào để chúng ta sử dụng biểu thức thông thường Python để phù hợp với chuỗi ngày?
  • Làm thế nào để chúng ta sử dụng một dấu phân cách để phân chia chuỗi trong biểu thức thông thường của Python?
  • Tại sao chúng ta sử dụng ngẫu nhiên.seed () trong python?
  • Tại sao chúng ta sử dụng gấu trúc trong Python?
  • Tại sao chúng ta sử dụng giao diện trong Java?
  • Làm thế nào để sử dụng ký tự đại diện trong biểu hiện thông thường Python?
  • Làm thế nào để sử dụng phạm vi trong biểu thức thông thường Python?
  • Làm thế nào để sử dụng các biến trong biểu thức thông thường Python?
  • Tại sao chúng ta sử dụng JQuery trên JavaScript?
  • Tại sao chúng ta sử dụng từ khóa nội bộ trong C#?
  • Tại sao chúng ta sử dụng toán tử dấu phẩy trong C#?

Làm thế nào để tôi thoát khỏi dấu hỏi trong Python?

Một giải pháp hiệu quả là sử dụng hàm str.translate () để loại bỏ tất cả các dấu chấm câu từ một chuỗi. Nó chỉ đơn giản là ánh xạ từng ký tự của chuỗi thông qua một bảng dịch, có thể dễ dàng tạo ra với str. hàm maketrans ().use the str. translate() function to remove all punctuations from a string. It simply maps each character of the string through a translation table, which can be easily created with the str. maketrans() function.

Một dấu hỏi trong Python có nghĩa là gì?

Xác định một lớp ký tự [cd] đọc là khớp với c hoặc d. Trình định lượng đánh dấu câu hỏi chỉ ra rằng bạn muốn khớp với một hoặc không xuất hiện của mẫu này.indicates that you want to match either one or zero occurrences of this pattern.

Python có thể sử dụng dấu hỏi?

Toán tử điều kiện ternary là một cách dễ dàng hơn để viết một câu lệnh if-else.Toán tử ternary có ba thành phần: biểu thức, giá trị dương và giá trị âm.Trong cách thể hiện tiêu chuẩn để thể hiện toán tử ternary, chúng tôi sử dụng dấu hỏi và dấu hai chấm.In the standardized way of expressing the ternary operator, we use a question mark and a colon.

Dấu câu hỏi ở Regex là gì?

Một biểu thức chính quy theo sau là một dấu hỏi (?) Khớp với số 0 hoặc một lần xuất hiện của biểu thức chính quy.Hai biểu thức thông thường kết hợp khớp với sự xuất hiện của lần đầu tiên sau đó là sự xuất hiện của lần thứ hai.matches zero or one occurrences of the regular expression. Two regular expressions concatenated match an occurrence of the first followed by an occurrence of the second.