^(\s+)
chỉ xóa khoảng trắng khỏi dòng đầu tiên. Làm cách nào để xóa khoảng trống phía trước khỏi tất cả các dòng?Python: sử dụng cụm từ thông dụng để xóa khoảng trắng khỏi tất cả các dòng
Trả lời
mô-đun regex Python không mặc định multi-line ^
matching , vì vậy bạn cần chỉ định cờ đó một cách rõ ràng.
r = re.compile(r"^\s+", re.MULTILINE)
r.sub("", "a\n b\n c") # "a\nb\nc"
# or without compiling (only possible for Python 2.7+ because the flags option
# didn't exist in earlier versions of re.sub)
re.sub(r"^\s+", "", "a\n b\n c", flags = re.MULTILINE)
# but mind that \s includes newlines:
r.sub("", "a\n\n\n\n b\n c") # "a\nb\nc"
Nó cũng có thể bao gồm các inline cờ để các mô hình:
re.sub(r"(?m)^\s+", "", "a\n b\n c")
Một giải pháp dễ dàng hơn là để tránh biểu thức thông thường bởi vì các vấn đề ban đầu rất đơn giản:
content = 'a\n b\n\n c'
stripped_content = ''.join(line.lstrip(' \t') for line in content.splitlines(True))
# stripped_content == 'a\nb\n\nc'
'"^\ s + "' cũng loại bỏ các dòng trống –
bạn có thể thử strip()
nếu bạn muốn loại bỏ mặt trước và sau, hoặc lstrip()
nếu trước
>>> s=" string with front spaces and back "
>>> s.strip()
'string with front spaces and back'
>>> s.lstrip()
'string with front spaces and back '
for line in open("file"):
print line.lstrip()
Nếu bạn thực sự muốn sử dụng regex
>>> import re
>>> re.sub("^\s+","",s) # remove the front
'string with front spaces and back '
>>> re.sub("\s+\Z","",s)
' string with front spaces and back' #remove the back
nowhite = ''.join(mytext.split())
KHÔNG có khoảng trắng sẽ vẫn như bạn đã hỏi (mọi thứ được đặt thành một từ). Thông thường hữu ích hơn là tham gia mọi thứ với ' '
hoặc '\n'
để giữ riêng các từ.
Bạn sẽ phải sử dụng tùy chọn re.MULTILINE:
re.sub("(?m)^\s+", "", text)
Các "(? M)" một phần cho phép có nhiều dòng.
@AndiDog thừa nhận trong câu trả lời (hiện được chấp nhận) của mình rằng nó nhai các dòng mới liên tiếp.
Dưới đây là cách khắc phục sự thiếu hụt đó, được gây ra bởi thực tế là \n
là khoảng trống và dấu tách dòng. Những gì chúng ta cần làm là tạo một lớp học lại chỉ bao gồm các ký tự khoảng trống ngoài dòng mới.
Chúng tôi muốn whitespace and not newline
, không thể hiển thị trực tiếp trong lớp học lại. Hãy viết lại rằng dưới dạng not not (whitespace and not newline)
tức là not(not whitespace or not not newline
(cảm ơn, Augustus) tức là not(not whitespace or newline)
tức là [^\S\n]
trong ký hiệu re
.
Vì vậy:
>>> re.sub(r"(?m)^[^\S\n]+", "", " a\n\n \n\n b\n c\nd e")
'a\n\n\n\nb\nc\nd e'
Bạn không thực sự cần biểu thức thông thường cho việc này hầu hết thời gian. Nếu bạn chỉ tìm cách để loại bỏ chung thụt đầu dòng trên nhiều dòng, hãy thử các textwrap
mô-đun:
>>> import textwrap
>>> messy_text = " grrr\n whitespace\n everywhere"
>>> print textwrap.dedent(messy_text)
grrr
whitespace
everywhere
Lưu ý rằng nếu thụt đầu dòng là bất thường, điều này sẽ được duy trì:
>>> very_messy_text = " grrr\n \twhitespace\n everywhere"
>>> print textwrap.dedent(very_messy_text)
grrr
whitespace
everywhere
- 1. Cụm từ thông dụng trong R để xóa tất cả ký tự sau khoảng trắng đầu tiên?
- 2. MySQL xóa tất cả khoảng trắng khỏi toàn bộ cột
- 3. Xóa các ngắt dòng thừa với cụm từ thông dụng
- 4. Cách xóa tất cả các khoảng trắng trong java
- 5. Xóa tất cả các khoảng trống và các dòng trống
- 6. thay thế tất cả các ngắt dòng không phải trước một khoảng thời gian có cụm từ thông dụng?
- 7. Cách xóa tất cả các khoảng trắng khỏi một tệp văn bản đã cho
- 8. Xóa tất cả các ký tự đặc biệt trừ khoảng trắng từ chuỗi bằng cách sử dụng JavaScript
- 9. Xóa khoảng trắng hàng đầu từ Tệp
- 10. Làm cách nào để xóa tất cả khoảng trắng và dấu ngắt dòng trong Perl?
- 11. Ruby giảm tất cả khoảng trắng thành không gian đơn
- 12. Javascript - Cách xóa tất cả khoảng trắng thừa giữa các từ
- 13. Cụm từ thông dụng để tìm tất cả các tên bảng trong một truy vấn
- 14. Cụm từ thông dụng để khớp tất cả các ký tự cho đến kết quả tiếp theo
- 15. Cách ưa thích để xóa khoảng trắng khỏi chuỗi
- 16. Cụm từ thông dụng: bắt đầu hoặc khoảng trắng phù hợp
- 17. Làm cách nào để tách chuỗi bằng khoảng trắng và bỏ qua khoảng trắng đầu và cuối vào một mảng từ bằng cụm từ thông dụng?
- 18. Cụm từ thông dụng để tìm một dòng có chứa các ký tự nhất định và xóa dòng đó
- 19. Xóa tất cả khoảng trắng trong một tệp và thay thế chúng bằng dấu phẩy bằng cách sử dụng Vim
- 20. Cụm từ thông dụng cho thẻ liên kết với tất cả các thành viên
- 21. Danh sách tất cả các từ phù hợp với cụm từ thông dụng
- 22. cụm từ thông dụng - khớp với tất cả các neo với các thuộc tính tùy chọn
- 23. Cụm từ thông dụng để khớp với tất cả các ký tự trên bàn phím Hoa Kỳ
- 24. Làm cách nào để tìm tất cả các kết quả phù hợp với cụm từ thông dụng trong Python?
- 25. Sử dụng cụm từ thông dụng để so sánh số
- 26. Thay thế tất cả các ký tự khoảng trắng
- 27. Làm cách nào để xóa thẻ khỏi chuỗi trong python bằng cụm từ thông dụng? (KHÔNG phải trong HTML)
- 28. Xóa khoảng trắng xung quanh khỏi hình ảnh
- 29. Cách xóa tất cả thông báo cục bộ khi ứng dụng bị xóa khỏi iPhone
- 30. Bộ chọn jQuery: chứa - Sử dụng cụm từ thông dụng
khoảng trắng bao gồm ký tự xuống dòng, có nghĩa là mọi thứ sẽ kết thúc trên một dòng, nếu bạn sử dụng nó trên một chuỗi đa dòng. cho chúng tôi thấy một số đầu vào để chúng tôi có thể giúp hiểu câu hỏi! – rdrey
@rdrey: Trên thực tế, '^' trong chế độ đa dòng khớp * sau * mỗi dòng mới, do đó sẽ không có vấn đề gì (ngoại trừ "\ n \ n"). Xem câu trả lời của tôi. – AndiDog
cảm ơn sự chỉnh sửa đó. học một cái gì đó mới mỗi ngày: D – rdrey