Thao tác với chuỗi trong python

Thao tác với chuỗi trong python

Khi xử lý văn bản, thường phải thao tác với chuỗi như là nối chuỗi, chia chuỗi thành các thành phần thông thường hoặc đổi thành chữ hoa hoặc chữ thường. Chúng ta sẽ thảo luận về các phương pháp nâng cao hơn để phân tích cú pháp và tách văn bản sau. Tuy nhiên, trong nhiều trường hợp, việc chia đoạn văn thành các dòng, các câu hoặc thậm chí các từ sẽ rất hữu ích. Cũng có trường hợp, ta cần loại bỏ một số ký tự trong các từ hoặc một từ sẽ cần được thay thế bằng một cách nào đó để có thể so sánh nó với một giá trị được xác định trước.

Bắt đầu

Chúng ta sử dụng một đoạn văn bản cơ bản và biến nó thành các thành phần chính; sau đó, chúng ta sẽ xây dựng lại nó. Ví dụ: một báo cáo cần được chuyển đổi sang một định dạng mới để được gửi qua email.

Dữ liệu input sử dụng trong ví dụ này là:

AFTER THE CLOSE OF THE SECOND QUARTER, OUR COMPANY, CASTAÑACORP

HAS ACHIEVED A GROWTH IN THE REVENUE OF 7.47%. THIS IS IN LINE

WITH THE OBJECTIVES FOR THE YEAR. THE MAIN DRIVER OF THE SALES HAS BEEN

THE NEW PACKAGE DESIGNED UNDER THE SUPERVISION OF OUR MARKETING DEPARTMENT.

OUR EXPENSES HAS BEEN CONTAINED, INCREASING ONLY BY 0.7%, THOUGH THE BOARD

CONSIDERS IT NEEDS TO BE FURTHER REDUCED. THE EVALUATION IS SATISFACTORY

AND THE FORECAST FOR THE NEXT QUARTER IS OPTIMISTIC. THE BOARD EXPECTS

AN INCREASE IN PROFIT OF AT LEAST 2 MILLION DOLLARS.

Chúng ta cần biên tập lại văn bản để loại bỏ bất kỳ tham chiếu nào đến các con số. Văn bản cũng cần phải được định dạng đúng bằng cách thêm một dòng mới sau mỗi dấu chấm, và điều chỉnh với 80 ký tự một dòng. Cuối cùng, văn bản nên được chuyển đổi thành mã ASCII vì lý do tương thích.

Văn bản sẽ được lưu trữ trong biến INPUT_TEXT

>>> INPUT_TEXT = '''
... AFTER THE CLOSE OF THE SECOND QUARTER, OUR COMPANY, CASTAÑACORP
... HAS ACHIEVED A GROWTH IN THE REVENUE OF 7.47%. THIS IS IN LINE
... '''

Thực hiện như thế nào ?

1. Sau khi nhập văn bản, hãy chia nó thành các từ riêng lẻ

>>> words = INPUT_TEXT.split()

2. Thay thế bất kỳ chữ số nào bằng ký tự ‘X’

>>> redacted = [''.join('X' if w.isdigit() else w for w in word) for word in words]

3. Chuyển văn bản thành ASCII thuần túy (lưu ý rằng tên của công ty có chứa ký tự ñ, không phải là ASCII)

>>> ascii_text = [word.encode('ascii', errors='replace').decode('ascii')
... for word in redacted]

4. Nhóm các từ thành các dòng 80 ký tự

>>> newlines = [word + '\n' if word.endswith('.') else word for word in ascii_text]
>>> LINE_SIZE = 80
>>> lines = []
>>> line = ''
>>> for word in newlines:
...   if line.endswith('\n') or len(line) + len(word) + 1 > LINE_SIZE:
...     lines.append(line)
...     line = ''
...   line = line + '  ' + word
...

5. Định dạng tất cả các dòng thành kiểu title và nối chúng thành một đoạn văn bản duy nhất

>>> lines = [line.title() for line in lines]
>>> result = '\n'.join(lines)

6. In kết quả

>>> print(result)
  After  The  Close  Of  The  Second  Quarter,  Our  Company,  Casta?Acorp  Has
  Achieved  A  Growth  In  The  Revenue  Of  X.Xx%.

  This  Is  In  Line  With  The  Objectives  For  The  Year.

  The  Main  Driver  Of  The  Sales  Has  Been  The  New  Package  Designed
  Under  The  Supervision  Of  Our  Marketing  Department.

  Our  Expenses  Has  Been  Contained,  Increasing  Only  By  X.X%,  Though  The
  Board  Considers  It  Needs  To  Be  Further  Reduced.

  The  Evaluation  Is  Satisfactory  And  The  Forecast  For  The  Next  Quarter
  Is  Optimistic.

The  Board  Expects  An  Increase  In  Profit  Of  At  Least  X  Million

Leave a Reply