回答:
Pythonでは、文字列は不変なので、新しい文字列を作成する必要があります。新しい文字列の作成方法にはいくつかのオプションがあります。「M」が表示されている場所から削除したい場合:
newstr = oldstr.replace("M", "")
中心のキャラクターを削除したい場合:
midlen = len(oldstr)/2 # //2 in python 3
newstr = oldstr[:midlen] + oldstr[midlen+1:]
文字列が特殊文字で終わるかどうか尋ねました。いいえ、あなたはCプログラマのように考えています。Pythonでは、文字列はその長さで格納されるため、などのバイト値を\0
文字列に含めることができます。
from __future__ import division
スクリプトの冒頭の行により、バージョン2.Xのpythonはバージョン3.Xのように動作します
""
は、空の行を意味しません。リストに入れて改行で結合すると、空の行が作成されますが、それを行わない空の文字列を使用する場所は他にもたくさんあります。
特定の位置を置き換えるには:
s = s[:pos] + s[(pos+1):]
特定の文字を置き換えるには:
s = s.replace('M','')
l
。次に、最初の部分では、posの制約はになりますl-1 > pos >= 0
。
文字列は不変です。しかし、それらを変更可能なリストに変換し、変更後にリストを文字列に戻すことができます。
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
他の人が示したように、既存の文字列から必要な文字以外のすべてを取得することで、新しい文字列を作成することもできます。
str.replace
メソッドを使用しないのですか?
どうすれば中間の文字、つまりMを削除できますか?
Pythonの文字列は不変なので、できません。
Pythonの文字列は特殊文字で終わりますか?
いいえ。文字のリストに似ています。リストの長さは文字列の長さを定義し、文字はターミネーターとして機能しません。
どちらがより良い方法です-中央の文字からすべてを右から左にシフトするか、新しい文字列を作成して中央の文字をコピーしませんか?
既存の文字列を変更することはできないため、中央の文字を除くすべてを含む新しい文字列を作成する必要があります。
次のtranslate()
方法を使用します。
>>> s = 'EXAMPLE'
>>> s.translate(None, 'M')
'EXAPLE'
str.maketrans( "", "", "<>")
してstr.maketrans( {"<":None,">":None })
'EXAMPLE'.translate({ord("M"): None})
変更可能な方法:
import UserString
s = UserString.MutableString("EXAMPLE")
>>> type(s)
<type 'str'>
# Delete 'M'
del s[3]
# Turn it for immutable:
s = str(s)
card = random.choice(cards)
cardsLeft = cards.replace(card, '', 1)
文字列から1文字を削除する方法: これは、文字列内の文字として表されるカードのスタックがある例です。それらの1つが描画されます(ランダムな文字をランダムに選択するrandom.choice()関数のランダムモジュールをインポートします)。新しい文字列、cardsLeftは、文字列関数replace()によって指定された残りのカードを保持するために作成されます。最後のパラメーターは、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
「M」を切り取るために私がしたことは次のとおりです。
s = 'EXAMPLE'
s1 = s[:s.index('M')] + s[s.index('M')+1:]
文字列内の文字を削除/無視したい場合、たとえば、この文字列がある場合、
「[11:L:0]」
Web APIレスポンスなどから、CSVファイルのように、リクエストを使用しているとしましょう
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
ループして不要な文字を削除します。
for line in resp.iter_lines():
line = line.replace("[", "")
line = line.replace("]", "")
line = line.replace('"', "")
オプションの分割。値を個別に読み取ることができます。
listofvalues = line.split(':')
各値へのアクセスが簡単になりました:
print listofvalues[0]
print listofvalues[1]
print listofvalues[2]
これは印刷されます
11
L
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))