Hướng dẫn python wrap string in parentheses - chuỗi quấn python trong ngoặc đơn

Đôi khi chúng ta có văn bản dài đó để viết theo một dòng

LONG_TEXT = "this is a very long text written in just one line of code"

Nhưng đôi khi tốt hơn là sử dụng cú pháp dấu ngoặc đơn để có khả năng đọc tốt hơn và phù hợp với giới hạn 80 ký tự.

LONG_TEXT = (
   'this is '  # no commas here!
   'a very '
   'long text '
   'written in '
   'multiple lines of code'    
)

Đôi khi nó hữu ích.

Lời cảnh báo là nếu ai đó nghĩ rằng đó là một tuple và thêm vào cuối mỗi dòng, long_text sẽ là một chuỗi các chuỗi.tuple and adds , in the end of each line, LONG_TEXT will be a sequence of strings.

LONG_TEXT = (
   'this is ',
   ...
)

Tôi có một chuỗi chứa các tên biến được phân tách bởi 'và'/', chẳng hạn như' x [1] và x [2] hoặc x [3] '. Số lượng tên biến khác nhau như cho dù đó là một 'và' hoặc 'hoặc' xuất hiện ở giữa chúng. Tôi muốn bọc dấu ngoặc đơn xung quanh mỗi đoạn của các biến được phân tách bởi 'hoặc. Ví dụ: nếu chuỗi là 'x [1] và x [2] hoặc x [3] và x [4] hoặc x [5] hoặc x [6] và x [7]', tôi muốn thay đổi nó thành 'x [1] và (x [2] hoặc x [3]) và (x [4] hoặc x [5] hoặc x [6]) và x [7]'.

Tôi thậm chí không phải là một người mới ở Regex. Tôi đã tự hỏi nếu có một cách khá thanh lịch và hiệu quả để làm điều này bằng cách sử dụng Regex trong Python? Bất kỳ sự giúp đỡ sẽ được chấp thuận rất nhiều.

Josh

hỏi ngày 27 tháng 7 năm 2016 lúc 22:36Jul 27, 2016 at 22:36

2

Điều này có thể làm những gì bạn muốn:

import re

s = 'x[1] and x[2] or x[3] and x[4] or x[5] or x[6] and x[7]'
s = re.sub(r'(\S+(?:\s*or\s*\S+)+)', r'(\1)', s)
assert s == 'x[1] and (x[2] or x[3]) and (x[4] or x[5] or x[6]) and x[7]'

Chỉnh sửa: một biểu thức mạnh mẽ hơn một chút và nhiều trường hợp kiểm tra hơn:

import re

tests = (
    ('x[1] and x[2] or x[3] and x[4] or x[5] or x[6] and x[7]',
    'x[1] and (x[2] or x[3]) and (x[4] or x[5] or x[6]) and x[7]'),
    ('door and floor', 'door and floor'),
    ('more and more and more', 'more and more and more')
)
for test, expected in tests:
    actual = re.sub(r'\S+(?:\s*\bor\b\s*\S+)+', r'(\g<0>)', test)
    assert actual == expected

Đã trả lời ngày 27 tháng 7 năm 2016 lúc 22:50Jul 27, 2016 at 22:50

Hướng dẫn python wrap string in parentheses - chuỗi quấn python trong ngoặc đơn

RobᵩrobᵩRobᵩ

158K17 Huy hiệu vàng226 Huy hiệu bạc 301 Huy hiệu đồng17 gold badges226 silver badges301 bronze badges

1

Vì bạn đã có câu trả lời với phương thức regex, đây là phương thức không yêu cầu regex:

>>> s = 'x[1] and x[2] or x[3] and x[4] or x[5] or x[6] and x[7]'
>>> ' and '.join(['(%s)' % w if ' or ' in w else w for w in s.split(' and ')])
'x[1] and (x[2] or x[3]) and (x[4] or x[5] or x[6]) and x[7]'

Làm thế nào nó hoạt động

Bước đầu tiên là phân chia trên

LONG_TEXT = (
   'this is '  # no commas here!
   'a very '
   'long text '
   'written in '
   'multiple lines of code'    
)
4:

>>> s.split(' and ')
['x[1]', 'x[2] or x[3]', 'x[4] or x[5] or x[6]', 'x[7]']

Bước tiếp theo là quyết định xem các chuỗi con có cần được bao quanh bởi parens hay không. Điều đó được thực hiện với một tuyên bố ternary:

>>> w = 'x[2] or x[3]'; '(%s)' % w if ' or ' in w else w
'(x[2] or x[3])'
>>> w = 'x[1]'; '(%s)' % w if ' or ' in w else w
'x[1]'

Bước cuối cùng là lắp lại chuỗi với

LONG_TEXT = (
   'this is '  # no commas here!
   'a very '
   'long text '
   'written in '
   'multiple lines of code'    
)
5.

Đã trả lời ngày 27 tháng 7 năm 2016 lúc 23:03Jul 27, 2016 at 23:03

Hướng dẫn python wrap string in parentheses - chuỗi quấn python trong ngoặc đơn

John1024John1024John1024

106K13 Huy hiệu vàng128 Huy hiệu bạc162 Huy hiệu Đồng13 gold badges128 silver badges162 bronze badges


Làm thế nào để bạn quấn một chuỗi trong Python?

Sử dụng toán tử '\'. Bạn cũng có thể bọc các dòng dài trong Python bằng toán tử '\'. Nó trông tốt hơn nếu bạn sử dụng dấu gạch chéo ngược. Hãy chắc chắn rằng dòng tiếp tục được thụt vào đúng.string class which provides several functions and methods using which you can perform various operations on strings.

Làm thế nào để bạn xử lý một chuỗi dài trong Python?

Sử dụng dấu ngoặc đơn trong Python, bạn có thể tự do phá vỡ dòng trong ngoặc đơn ((), {}, []). Sử dụng quy tắc này, bạn có thể viết một chuỗi dài trên nhiều dòng với dấu ngoặc đơn thay vì dấu gạch chéo ngược.

Các dấu ngoặc đơn trong Python là gì?

Điểm số tiêu chuẩn - () Nói rộng ra, việc sử dụng dấu ngoặc đơn chính trong Python là gọi một đối tượng. Đó là lý do tại sao dấu ngoặc đơn tiêu chuẩn đôi khi được gọi là "toán tử cuộc gọi". Ngoài việc sử dụng chính của chúng, dấu ngoặc đơn cũng được sử dụng để xác định các biểu thức của máy phát.

Một chuỗi là một tập hợp các ký tự có thể đại diện cho một từ hoặc toàn bộ câu. Không giống như Java, không cần phải khai báo các chuỗi Python rõ ràng, chúng ta có thể trực tiếp gán giá trị chuỗi cho một nghĩa đen.

Một chuỗi trong Python được biểu thị bằng một lớp chuỗi cung cấp một số chức năng và phương thức sử dụng mà bạn có thể thực hiện các hoạt động khác nhau trên các chuỗi.

str1 = "Welcome to Tutroialspoint" print("The given string is") print(str1) print("After wrapping the line") res = list(str1) print(res)

Đầu ra

Đầu ra của ví dụ trên là,

The given string is
Welcome to Tutroialspoint
After wrapping the line
['W', 'e', 'l', 'c', 'o', 'm', 'e', ' ', 't', 'o', ' ', 'T', 'u', 't', 'r', 'o', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't']

Ví dụ 2

Trong ví dụ được đưa ra dưới đây, chúng tôi sẽ lấy ví dụ tương tự như trên nhưng chúng tôi đang đặt như một sự phá vỡ dòng dấu ngoặc đơn

LONG_TEXT = (
   'this is '  # no commas here!
   'a very '
   'long text '
   'written in '
   'multiple lines of code'    
)
0

Đầu ra

Đầu ra của ví dụ trên là,

LONG_TEXT = (
   'this is '  # no commas here!
   'a very '
   'long text '
   'written in '
   'multiple lines of code'    
)
1

Ví dụ 2

Trong ví dụ được đưa ra dưới đây, chúng tôi sẽ lấy ví dụ tương tự như trên nhưng chúng tôi đang đặt như một sự phá vỡ dòng dấu ngoặc đơn\’ operator. It looks better if you use a backslash. Make sure the continuation line is properly indented. Breaking around a binary operator is best done after it, rather than before it. We have to carefully indent near the backlash, it has to be in between 2 different lines.

Sử dụng toán tử ‘\ \

Bạn cũng có thể bọc các dòng dài trong Python bằng toán tử ‘\ \. Nó trông tốt hơn nếu bạn sử dụng dấu gạch chéo ngược. Hãy chắc chắn rằng dòng tiếp tục được thụt vào đúng. Xung quanh một toán tử nhị phân được thực hiện tốt nhất sau khi nó, thay vì trước đó. Chúng ta phải cẩn thận thụt vào gần phản ứng dữ dội, nó phải ở giữa 2 dòng khác nhau.

LONG_TEXT = (
   'this is '  # no commas here!
   'a very '
   'long text '
   'written in '
   'multiple lines of code'    
)
2

Đầu ra

Đầu ra của ví dụ trên là,

LONG_TEXT = (
   'this is '  # no commas here!
   'a very '
   'long text '
   'written in '
   'multiple lines of code'    
)
3

Hướng dẫn python wrap string in parentheses - chuỗi quấn python trong ngoặc đơn

Ví dụ 2

  • Trong ví dụ được đưa ra dưới đây, chúng tôi sẽ lấy ví dụ tương tự như trên nhưng chúng tôi đang đặt như một sự phá vỡ dòng dấu ngoặc đơn
  • Sử dụng toán tử ‘\ \
  • Bạn cũng có thể bọc các dòng dài trong Python bằng toán tử ‘\ \. Nó trông tốt hơn nếu bạn sử dụng dấu gạch chéo ngược. Hãy chắc chắn rằng dòng tiếp tục được thụt vào đúng. Xung quanh một toán tử nhị phân được thực hiện tốt nhất sau khi nó, thay vì trước đó. Chúng ta phải cẩn thận thụt vào gần phản ứng dữ dội, nó phải ở giữa 2 dòng khác nhau.
  • Thí dụ
  • Trong ví dụ được đưa ra dưới đây, chúng tôi đang lấy một chuỗi làm đầu vào và chúng tôi đang gói dòng bằng toán tử ngược.
  • Cập nhật vào ngày 26 tháng 10 năm 2022 07:52:45
  • Câu hỏi và câu trả lời liên quan
  • Làm thế nào để viết các chuỗi dài trong nhiều dòng C/C ++?
  • Chương trình để tìm có bao nhiêu dòng giao nhau trong Python
  • Làm thế nào để tạo một chuỗi nhiều dòng dài trong Python?
  • Chuyển đổi nguyên thủy dài thành đối tượng dài trong Java
  • Dòng và thụt vào trong Python
  • Làm thế nào để viết nhiều dòng trong tệp văn bản bằng Python?
  • Làm thế nào để xóa các dòng khỏi một tấm vải python tkinter?
  • Làm thế nào để viết văn bản trong văn bản tkinter?
  • Làm cách nào để bọc một chuỗi trong một tệp trong Python?

Làm thế nào để bạn quấn một chuỗi trong Python?

Sử dụng toán tử '\'.Bạn cũng có thể bọc các dòng dài trong Python bằng toán tử '\'.Nó trông tốt hơn nếu bạn sử dụng dấu gạch chéo ngược.Hãy chắc chắn rằng dòng tiếp tục được thụt vào đúng.. You can also wrap long lines in Python using the '\' operator. It looks better if you use a backslash. Make sure the continuation line is properly indented.

Làm thế nào để bạn xử lý một chuỗi dài trong Python?

Sử dụng dấu ngoặc đơn trong Python, bạn có thể tự do phá vỡ dòng trong ngoặc đơn ((), {}, []).Sử dụng quy tắc này, bạn có thể viết một chuỗi dài trên nhiều dòng với dấu ngoặc đơn thay vì dấu gạch chéo ngược. In Python, you can freely break the line in parentheses ( () , {} , [] ). Using this rule, you can write a long string on multiple lines with parentheses instead of backslashes.

Các dấu ngoặc đơn trong Python là gì?

Điểm số tiêu chuẩn - () Nói rộng ra, việc sử dụng dấu ngoặc đơn chính trong Python là gọi một đối tượng.Đó là lý do tại sao dấu ngoặc đơn tiêu chuẩn đôi khi được gọi là "toán tử cuộc gọi".Ngoài việc sử dụng chính của chúng, dấu ngoặc đơn cũng được sử dụng để xác định các biểu thức của máy phát.to call an object. That is the reason why standard parentheses are sometimes called the "call operator." Aside from their main use, parentheses are also used to define generator expressions.