30/09/2018, 22:00

Hỏi về bỏ khoảng cách giữa các ký tự in liền nhau trong python

Em đang làm bài tập về xử lý chuỗi bằng python. Em gặp một vấn đề là khi dụng lệnh print in các ký tự liên tiếp nhau trên 1 hàng thì đều xuất hiện khoảng trống chứ không in liền Ví dụ như đoạn mã dưới đây:

list = [‘a’, ‘b’,‘c’, ‘d’]
for i in list:
print “%s” % i,
Kết quả hiện ra màn hình là: a b c d
Ở đây em muốn hỏi tại sao nó không in liền là : abcd.
Và em muốn nó hiển thị liền không có khoảng trống thì xử lý như thế nào ạ

viết 00:07 ngày 01/10/2018

Bạn có thể làm như này:

list=['a','b','c','d']
print ''.join(str(i) for i in list)
anon10499953 viết 00:15 ngày 01/10/2018
>>> list = ['a', 'b', 'c', 'd']
>>> print ''.join(list)
abcd

Peace!

Nguyễn Hồng Hào viết 00:09 ngày 01/10/2018

Vậy cho em hỏi thêm chút.
E đang làm bài có đề là Tách ra các chữ trong dãy ký tự cho trước Ví dụ: “A))****%%$$$bx” thì phải tách ra dược Abx.
Ở đây em dùng cách duyệt từng từ rồi so sánh, em dùng join để in ra mà k đc

Lương Quang Mạnh viết 00:07 ngày 01/10/2018

Nếu bạn biết một chút về regular expression thì nhàn cực kì

import re

s = "A))****%%$$$bx"
res = ''.join(re.findall(r'\w', s))
Nguyễn Hồng Hào viết 00:01 ngày 01/10/2018

A cỏ thể giải thích rõ các lệnh a dùng ở trên được không ạ, re.findall là gì, r’\w nữa

Lương Quang Mạnh viết 00:05 ngày 01/10/2018

Truớc hết, r'something' chỉ raw string. Trong raw string, escape sequence character \ bị bỏ qua
vd:

>>> print('hello\nwolrd')
hello
world
>>> print(r'hello\nworld')
hello\nworld

re là một module để sử dụng regular expressions hay dịch ra Tiếng Việt thì là biểu thức chính quy trong Python (regular expressions là cái gì thì bạn tra Google để biết thêm). Đại khái là nó sẽ giúp chúng ta rất nhiều trong việc xử lý strings.

findall() là một function trong re (vì import từ module nên phải thêm re. đằng trước), trả về một list bao gồm tất cả substrings thỏa mãn pattern \w, ở đây là tất cả các chữ cái, số và dấu _ (bạn đọc Python Documentation để biết thêm chi tiết). Cho nên mình xin đính chính lại phần code bên trên một chút:

res = ''.join(re.findall(r'[a-zA-Z]', s))

Dùng r'[a-zA-Z]' sẽ chỉ tìm tất cả chữ cái thôi
Cuối cùng, ta dùng string method join() để nối các phần tử của list trên thành một string như @mad_programmer đã đề cập

Nap Fvn viết 00:08 ngày 01/10/2018

Thêm cách nữa. .

for i in list:
print(i, end="")

JUST PYTHON3

Bài liên quan
0