Bagaimana untuk menghapus sebuah karakter dari sebuah string menggunakan Python

Ada sebuah string, misalnya. CONTOH.

Bagaimana saya bisa menghapus tengah karakter, yaitu, M dari itu? Saya don't perlu kode. Saya ingin tahu:

  • Apakah string di Python akhir di setiap karakter khusus?
  • Yang lebih baik dengan cara - merubah semuanya kanan ke kiri mulai dari tengah karakter ATAU penciptaan sebuah string baru dan tidak menyalin tengah karakter?
Mengomentari pertanyaan (1)
Larutan

Di Python, string yang dapat berubah, sehingga anda harus membuat string baru. Anda memiliki beberapa pilihan cara untuk membuat string baru. Jika anda ingin menghapus 'M' di mana pun muncul:

newstr = oldstr.replace("M", "")

Jika anda ingin menghapus karakter utama:

midlen = len(oldstr)/2   # //2 in python 3
newstr = oldstr[:midlen] + oldstr[midlen+1:]

Anda bertanya apakah string yang diakhiri dengan karakter khusus. Tidak, anda berpikir seperti C programmer. Di Python, string disimpan dengan panjang mereka, sehingga setiap nilai byte, termasuk \0, dapat muncul dalam sebuah string.

Komentar (3)

Ini mungkin adalah cara terbaik:

original = "EXAMPLE"
removed = original.replace("M", "")

Don't khawatir tentang pergeseran karakter dan semacamnya. Kebanyakan kode Python terjadi pada tingkat yang jauh lebih tinggi dari abstraksi.

Komentar (3)

Untuk menggantikan posisi tertentu:

s = s[:pos] + s[(pos+1):]

Untuk mengganti karakter tertentu:

s = s.replace('M','')
Komentar (3)

String yang berubah. Tapi anda dapat mengkonversi mereka ke daftar, yang bisa berubah, dan kemudian mengkonversi daftar kembali ke string setelah anda've berubah.

s = "this is a string"

l = list(s)  # convert to list

l[1] = ""    # "delete" letter h (the item actually still exists but is empty)
l[1:2] = []  # really delete letter h (the item is actually removed from the list)
del(l[1])    # another way to delete it

p = l.index("a")  # find position of the letter "a"
del(l[p])         # delete it

s = "".join(l)  # convert back to string

Anda juga dapat membuat string baru, sebagai orang lain telah menunjukkan, dengan mengambil semua kecuali karakter yang anda inginkan dari yang ada string.

Komentar (1)

Bagaimana saya bisa menghapus tengah karakter, yaitu, M dari itu?

Anda dapat't, karena string di Python adalah berubah.

Apakah string di Python akhir di setiap karakter khusus?

No. Mereka mirip dengan daftar karakter; panjang daftar mendefinisikan panjang dari string, dan tidak ada karakter yang bertindak sebagai terminator.

Yang merupakan cara yang lebih baik - pergeseran segala sesuatu kanan ke kiri mulai dari tengah karakter ATAU penciptaan sebuah string baru dan tidak menyalin tengah karakter?

Anda tidak dapat memodifikasi yang sudah ada string, sehingga anda harus membuat yang baru mengandung segala sesuatu kecuali tengah karakter.

Komentar (0)

Gunakan translate() metode:

>>> s = 'EXAMPLE'
>>> s.translate(None, 'M')
'EXAPLE'
Komentar (3)

UserString.MutableString

Bisa berubah dengan cara:

import UserString

s = UserString.MutableString("EXAMPLE")

>>> type(s)


# Delete 'M'
del s[3]

# Turn it for immutable:
s = str(s)
Komentar (1)
def kill_char(string, n): # n = position of which character you want to remove
    begin = string[:n]    # from beginning to n (n not included)
    end = string[n+1:]    # n+1 through end of string
    return begin + end
print kill_char("EXAMPLE", 3)  # "M" removed

Saya telah melihat ini di suatu tempat di sini.

Komentar (0)
card = random.choice(cards)
cardsLeft = cards.replace(card, '', 1)

Bagaimana untuk menghapus satu karakter dari sebuah string: Berikut ini adalah contoh di mana ada tumpukan kartu direpresentasikan sebagai karakter dalam sebuah string. Salah satu dari mereka ditarik (impor acak modul secara acak.pilihan() fungsi, yang mengambil acak karakter dalam string). String baru, cardsLeft, dibuat untuk menahan sisa kartu yang diberikan oleh string fungsi replace() dimana parameter terakhir menunjukkan bahwa hanya satu "kartu" adalah untuk diganti dengan string kosong...

Komentar (0)

Berikut ini's apa yang saya lakukan untuk mengiris keluar "M":

s = 'EXAMPLE'
s1 = s[:s.index('M')] + s[s.index('M')+1:]
Komentar (1)

Jika anda ingin menghapus/mengabaikan karakter dalam sebuah string, dan, misalnya, anda memiliki string ini,

"[11:L:0]"

dari web API respon atau sesuatu seperti itu, seperti file CSV, let's mengatakan anda menggunakan permintaan

import requests
udid = 123456
url = 'http://webservices.yourserver.com/action/id-' + udid
s = requests.Session()
s.verify = False
resp = s.get(url, stream=True)
content = resp.content

loop dan menyingkirkan yang tidak diinginkan karakter:

for line in resp.iter_lines():
  line = line.replace("[", "")
  line = line.replace("]", "")
  line = line.replace('"', "")

Opsional split, dan anda akan dapat membaca nilai-nilai individual:

listofvalues = line.split(':')

Sekarang mengakses setiap nilai yang lebih mudah:

print listofvalues[0]
print listofvalues[1]
print listofvalues[2]

Ini akan mencetak

11

L

0

Komentar (0)

Untuk menghapus char atau sub-string setelah (hanya kejadian pertama):

main_string = main_string.replace(sub_str, replace_with, 1)

CATATAN: di Sini 1 dapat diganti dengan int untuk jumlah kejadian yang ingin anda ganti.

Komentar (0)

Anda dapat hanya menggunakan daftar pemahaman.

Asumsikan bahwa anda memiliki string: nama saya dan anda ingin menghapus karakter m. gunakan kode berikut:

"".join([x for x in "my name is" if x is not 'm'])
Komentar (0)
from random import randint

def shuffle_word(word):
    newWord=""
    for i in range(0,len(word)):
        pos=randint(0,len(word)-1)
        newWord += word[pos]
        word = word[:pos]+word[pos+1:]
    return newWord

word = "Sarajevo"
print(shuffle_word(word))
Komentar (1)

String yang berubah di Python jadi pilihan anda berarti hal yang sama pada dasarnya.

Komentar (0)