Cách xóa dấu phẩy cuối cùng trong vòng lặp for python

Python hỗ trợ cắt chỉ mục tiêu cực cùng với cắt theo hướng tích cực. Chỉ mục phủ định bắt đầu từ -1 đến -(iterable_length). Chúng tôi sẽ sử dụng phép cắt âm để lấy các phần tử từ cuối một lần lặp

  • Chỉ mục -1 giúp bạn lấy phần tử cuối cùng từ phần tử có thể lặp lại
  • Chỉ mục -2 giúp bạn có được phần tử cuối cùng thứ 2 từ phần tử có thể lặp lại
  • Và nó tiếp tục cho đến phần tử đầu tiên

Hãy xem một ví dụ

name = 'Geekflare'
print(name[-1])
print(name[-len(name)])

Chương trình trên sẽ in các ký tự cuối cùng và đầu tiên của chuỗi bằng cách sử dụng chỉ mục phủ định

Làm cách nào để xóa phần tử cuối cùng khỏi chuỗi bằng cách cắt? . Chúng tôi biết cách trích xuất một phần của chuỗi bằng cách cắt. Hãy áp dụng điều tương tự với chỉ số âm để xóa ký tự cuối cùng khỏi chuỗi

  • Cắt chuỗi từ đầu đến cuối trước phần tử
buggy_name = 'GeekflareE'
name = buggy_name[:-1]
print(name)

Hãy tập trung vào dòng thứ hai trong đoạn mã trên. Đó là dòng ma thuật trong mã. Là một phép cắt truyền thống, nó trích xuất chuỗi con từ chỉ mục bắt đầu đến cuối cùng nhưng một phép cắt bỏ qua phần tử chỉ mục thứ hai đã cho

Bạn sẽ nhận được Geekflare dưới dạng đầu ra nếu chạy đoạn mã trên

dải băng

Phương thức chuỗi rstrip xóa các ký tự ở phía bên phải của chuỗi được cấp cho nó. Vì vậy, chúng ta có thể sử dụng nó để loại bỏ phần tử cuối cùng của chuỗi. Chúng tôi không phải viết nhiều hơn một dòng mã để xóa ký tự cuối cùng khỏi chuỗi

  • Cung cấp phần tử cuối cùng cho phương thức dải, nó sẽ trả về chuỗi bằng cách xóa ký tự cuối cùng

Hãy xem đoạn mã

buggy_name = 'GeekflareE'
name = buggy_name.rstrip(buggy_name[-1])
print(name)

Chúng tôi đã cung cấp ký tự cuối cùng của chuỗi cho phương thức dải. Nó xóa ký tự cuối cùng khỏi chuỗi và trả về một bản sao không có ký tự cuối cùng

Nó sẽ in Geekflare trong bảng điều khiển, nếu bạn thực hiện nó

Ví dụ thực tế – loại bỏ từ cuối cùng

Vâng, chúng tôi sẽ áp dụng những gì chúng tôi có trong các phần trước trong một ví dụ thực tế

Giả sử chúng ta có một tệp chứa nhiều dòng văn bản. Và chúng ta cần xóa từ cuối cùng khỏi mỗi dòng trong tệp

Thực hiện theo các bước dưới đây để viết chương trình

  • Tạo một tệp có tên random_text. txt và trang một vài dòng văn bản trong đó
  • Khởi tạo biến dữ liệu dưới dạng chuỗi rỗng
  • Mở tệp bằng phương thức với và mở ở chế độ đọc và ghi
  • Đọc nội dung của tệp bằng phương thức readlines
  • Lặp lại qua từng dòng nội dung
    • Tách dòng văn bản bằng phương pháp tách dòng trong word
    • Xóa từ cuối cùng bằng một trong các phương pháp trên
    • Tham gia kết quả để tạo thành một chuỗi
    • Nối kết quả vào biến dữ liệu
  • Xóa dữ liệu khỏi tệp bằng các phương pháp tìm kiếm và rút gọn 
  • Ghi dữ liệu mới nhất vào tệp bằng phương thức ghi 

Tệp chứa dữ liệu sau

This is a sample line for testing. LastWord.
This is a sample line for testing. KillingIt.
This is a sample line for testing. RandomWord.
This is a sample line for testing. DeleteIt.
This is a sample line for testing. RemovingIt.

Xem mã dưới đây

updated_data = ''

# opening the file
with open('random_text.txt', 'r+') as file:
    # read the file content
    file_content = file.readlines()

    # iterate over the content
    for line in file_content:

        # removing last word
        updated_line = ' '.join(line.split(' ')[:-1])

        # appending data to the variable
        updated_data += f'{updated_line}\n'

    # removing the old data
    file.seek(0)
    file.truncate()

    # writing the new data
    file.write(updated_data)

Nếu bạn thực thi đoạn mã trên với tệp đã cho, thì tệp sẽ có dữ liệu được cập nhật như sau

Jinja là một công cụ mẫu Python tuyệt vời. Bài viết này giải thích cách bỏ dấu phẩy cuối cùng trong một bộ truyện với Jinja

Kết quả mong muốn được hiển thị bên dưới--đây là danh sách đối số cho thủ tục lưu trữ SQL. Lưu ý rằng cột Id cần có giá trị mặc định bằng 0 và không thể có dấu phẩy sau cột cuối cùng

1

2

3

4

5

@Id int = 0,

@Tên nvarchar(100),

@PrefixWithThe bit,

@Đã thêm ngày giờ,

@Đã cập nhật ngày giờ

Trong lược đồ Libretto SQL Server Json có mã thông báo meta cột columnSqlDeclarations tạo ra mã này

1

2

3

4

5

@Id int,

@Tên nvarchar(100),

@PrefixWithThe bit,

@Đã thêm ngày giờ,

@Đã cập nhật ngày giờ,

Đó là gần, nhưng không có xì gà. Nó không gán số 0 cho cột Id và dấu phẩy ở cuối làm hỏng mọi thứ

Gán số 0 cho Id là một trường hợp đặc biệt, vì vậy (trong trường hợp của tôi) công việc thủ công nhỏ buộc gán số 0 đáng giá (cũng lưu ý rằng bài kiểm tra cho cột

buggy_name = 'GeekflareE'
name = buggy_name[:-1]
print(name)
1 không phân biệt chữ hoa chữ thường--chỉ trong trường hợp)

1

2

3

4

5

6

7

{% cho col in columns %}

{% if col. Tên cột. thấp hơn() == 'id' %}

@{{col. Tên cột}} {{ . col.DDLType}} = 0

{% else %}

@{{col. Tên cột}} {{ . col.DDLType}}

{% endif %}

{% endfor %}

Điều đó gần đúng, nhưng dấu phẩy ở cuối vẫn còn

1

2

3

4

5

Id int = 0,

@Tên nvarchar(100),

@PrefixWithThe bit,

@Đã thêm ngày giờ,

@Đã cập nhật ngày giờ,

Để có được kết quả mong muốn, mẫu cần bỏ qua dấu phẩy ở cuối phần tử cuối cùng trong chuỗi. mẫu này

1

2

3

4

5

6

7

{% cho col in columns %}

{% if col. Tên cột. thấp hơn() == 'id' %}

@{{col. Tên cột}} {{ . col.DDLType}} = 0 . {% if not loop.lần cuối %},{% endif %}

{% else %}

@{{col. Tên cột}} {{ . col.DDLType}}{% . if not loop.cuối cùng %},{% endif %}  

{% endif %}

{% endfor %}

tạo ra kết quả chính xác

1

2

3

4

5

@Id int = 0,

@Tên nvarchar(100),

@PrefixWithThe bit,

@Đã thêm ngày giờ,

@Đã cập nhật ngày giờ

Công cụ tạo khuôn mẫu Jinja có một biến tích hợp theo dõi chỉ mục vòng lặp. Điều kiện giá trị

buggy_name = 'GeekflareE'
name = buggy_name[:-1]
print(name)
2 khi mẫu phát ra dấu phẩy