287
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi muốn thay thế khoảng trắng bằng dấu gạch dưới trong một chuỗi để tạo các url đẹp. Vì vậy, ví dụ:
"This should be connected"
Nên trở thành
"This_should_be_connected"
Tôi đang sử dụng Python với Django. Điều này có thể được giải quyết bằng cách sử dụng các biểu thức thông thường?
Tomerikoo
16.7K15 Huy hiệu vàng38 Huy hiệu bạc54 Huy hiệu đồng15 gold badges38 silver badges54 bronze badges
hỏi ngày 17 tháng 6 năm 2009 lúc 14:41Jun 17, 2009 at 14:41
1
Bạn không cần biểu cảm thường xuyên. Python có một phương thức chuỗi tích hợp thực hiện những gì bạn cần:
mystring.replace[" ", "_"]
Luke Exton
3.2462 Huy hiệu vàng18 Huy hiệu bạc32 Huy hiệu đồng2 gold badges18 silver badges32 bronze badges
Đã trả lời ngày 17 tháng 6 năm 2009 lúc 14:44Jun 17, 2009 at 14:44
RogeriOpvlrogerioPVLrogeriopvl
48.8K8 Huy hiệu vàng52 Huy hiệu bạc58 Huy hiệu đồng8 gold badges52 silver badges58 bronze badges
8
Thay thế không gian là tốt, nhưng tôi có thể đề nghị đi xa hơn một chút để xử lý các ký tự url khác như dấu hỏi, dấu nháy đơn, dấu chấm than, v.v.
Cũng lưu ý rằng sự đồng thuận chung giữa các chuyên gia SEO là các dấu gạch ngang được ưu tiên để nhấn mạnh trong URL.
import re
def urlify[s]:
# Remove all non-word characters [everything except numbers and letters]
s = re.sub[r"[^\w\s]", '', s]
# Replace all runs of whitespace with a single dash
s = re.sub[r"\s+", '-', s]
return s
# Prints: I-cant-get-no-satisfaction"
print[urlify["I can't get no satisfaction!"]]
vvvvv
19.1K16 Huy hiệu vàng43 Huy hiệu bạc62 Huy hiệu Đồng16 gold badges43 silver badges62 bronze badges
Đã trả lời ngày 17 tháng 6 năm 2009 lúc 15:03Jun 17, 2009 at 15:03
Ngân hàng Kenan BankskenanKenan Banks
201K34 Huy hiệu vàng151 Huy hiệu bạc171 Huy hiệu đồng34 gold badges151 silver badges171 bronze badges
7
Điều này có tính đến các ký tự trống khác với không gian và tôi nghĩ nó nhanh hơn so với sử dụng mô -đun
"This_should_be_connected"
8:url = "_".join[ title.split[] ]
Đã trả lời ngày 29 tháng 4 năm 2012 lúc 23:18Apr 29, 2012 at 23:18
XonecaxonecaxOneca
8039 Huy hiệu bạc20 Huy hiệu Đồng9 silver badges20 bronze badges
5
Django có chức năng 'slugify' thực hiện điều này, cũng như các tối ưu hóa thân thiện với URL khác. Nó được ẩn đi trong mô -đun DefaultFilters.
>>> from django.template.defaultfilters import slugify
>>> slugify["This should be connected"]
this-should-be-connected
Đây không chính xác là đầu ra mà bạn đã yêu cầu, nhưng IMO tốt hơn là sử dụng trong URL.
Đã trả lời ngày 17 tháng 6 năm 2009 lúc 15:15Jun 17, 2009 at 15:15
Daniel Rosemandaniel RosemanDaniel Roseman
575K61 Huy hiệu vàng841 Huy hiệu bạc853 Huy hiệu Đồng61 gold badges841 silver badges853 bronze badges
6
Sử dụng mô -đun
"This_should_be_connected"
8:import re
re.sub['\s+', '_', "This should be connected"] # This_should_be_connected
re.sub['\s+', '_', 'And so\tshould this'] # And_so_should_this
Trừ khi bạn có nhiều không gian hoặc các khả năng khoảng trắng khác như trên, bạn có thể chỉ muốn sử dụng
mystring.replace[" ", "_"]
0 như những người khác đã đề xuất.Đã trả lời ngày 17 tháng 6 năm 2009 lúc 14:45Jun 17, 2009 at 14:45
Jarret Hardiejarret HardieJarret Hardie
92.1k10 Huy hiệu vàng130 Huy hiệu bạc125 Huy hiệu Đồng10 gold badges130 silver badges125 bronze badges
2
Sử dụng phương thức thay thế chuỗi:
mystring.replace[" ", "_"]
1mystring.replace[" ", "_"]
2Đã trả lời ngày 17 tháng 6 năm 2009 lúc 14:45Jun 17, 2009 at 14:45
Jarret Hardiejarret Hardiemdirolf
92.1k10 Huy hiệu vàng130 Huy hiệu bạc125 Huy hiệu Đồng2 gold badges22 silver badges15 bronze badges
Sử dụng phương thức thay thế chuỗi:
mdirolfmdirolf
pip install python-slugify
7.3912 Huy hiệu vàng22 Huy hiệu bạc15 Huy hiệu Đồng
from slugify import slugify
txt = "This is a test ---"
r = slugify[txt]
self.assertEquals[r, "this-is-a-test"]
txt = "This -- is a ## test ---"
r = slugify[txt]
self.assertEquals[r, "this-is-a-test"]
txt = 'C\'est déjà l\'été.'
r = slugify[txt]
self.assertEquals[r, "cest-deja-lete"]
txt = 'Nín hǎo. Wǒ shì zhōng guó rén'
r = slugify[txt]
self.assertEquals[r, "nin-hao-wo-shi-zhong-guo-ren"]
txt = 'Компьютер'
r = slugify[txt]
self.assertEquals[r, "kompiuter"]
txt = 'jaja---lol-méméméoo--a'
r = slugify[txt]
self.assertEquals[r, "jaja-lol-mememeoo-a"]
Đáng ngạc nhiên là thư viện này chưa được đề cậpSep 28, 2015 at 16:01
Gói Python có tên Python-Slugify, công việc khá tốt là chậm chạp:Yash
Hoạt động như thế này:4 gold badges35 silver badges26 bronze badges
Đã trả lời ngày 28 tháng 9 năm 2015 lúc 16:01
string.replace[old, new]
Yashyash
"This_should_be_connected"
06.1144 Huy hiệu vàng35 Huy hiệu bạc26 Huy hiệu đồng
Python có một phương thức tích hợp trên các chuỗi gọi là thay thế được sử dụng như vậy:Jun 18, 2009 at 12:34
Vì vậy, bạn sẽ sử dụng:
"This_should_be_connected"
1Tôi đã gặp vấn đề này một thời gian trước đây và tôi đã viết mã để thay thế các ký tự trong một chuỗi. Tôi phải bắt đầu nhớ để kiểm tra tài liệu Python vì chúng đã được xây dựng trong các chức năng cho mọi thứ.
Đã trả lời ngày 18 tháng 6 năm 2009 lúc 12:34Jun 17, 2009 at 15:36
Tôi đang sử dụng đoạn mã sau cho URL thân thiện của mình:Armandas
Nó hoạt động tốt với các ký tự Unicode là tốt.1 gold badge17 silver badges24 bronze badges
1
Đã trả lời ngày 17 tháng 6 năm 2009 lúc 15:36
"This_should_be_connected"
2
Armandasarmandas
1.7601 Huy hiệu vàng17 Huy hiệu bạc24 Huy hiệu đồng7 gold badges39 silver badges37 bronze badges
Bạn có thể thử điều này thay thế:May 6, 2018 at 15:28
1
"This_should_be_connected"
3Jules Dupont
"This_should_be_connected"
46.7517 Huy hiệu vàng39 Huy hiệu bạc37 Huy hiệu đồng
Đã trả lời ngày 6 tháng 5 năm 2018 lúc 15:28Jul 31, 2016 at 16:51
Nếu bạn gán giá trị này cho bất kỳ biến nào, nó sẽ hoạt động
"This_should_be_connected"
5theo mặc định myString sẽ không có cái nàyJul 4, 2010 at 23:34
Đã trả lời ngày 31 tháng 7 năm 2016 lúc 16:51skilleo
OP đang sử dụng Python, nhưng trong JavaScript [một cái gì đó cần cẩn thận vì cú pháp là tương tự nhau.1 gold badge27 silver badges34 bronze badges
"This_should_be_connected"
6
Đã trả lời ngày 4 tháng 7 năm 2010 lúc 23:34
Skilleoskilleo18 gold badges133 silver badges201 bronze badges
2.4221 Huy hiệu vàng27 Huy hiệu bạc34 Huy hiệu đồngNov 28, 2021 at 6:25
4
"This_should_be_connected"
7EYLLLANESC
226K18 Huy hiệu vàng133 Huy hiệu bạc201 Huy hiệu đồngJun 19, 2009 at 7:30