1

私は膨大な数の行のリストを持っていますが、それぞれは次のようになります

1 01 01 some random text

パーツは、1 01 01行ごとに変わる参照番号です。3つの参照番号の間の2つの空白を削除して、線が次のようになるようにします。

10101 some random text

明らかに、これはforループを必要とします。strip問題は、使用できないループ内に何を書くべきかということです。

for i in my_list:
    i.strip()

それは、どちらかといえば、すべての空白を削除し、私に与えるからです

10101somerandomtext

欲しくない。しかし、私が書くなら

for i in my_list:
    i.remove(4)
    i.remove(1)

エラーメッセージが表示されます'str' object has no attribute 'remove'。この場合の適切な解決策は何ですか。

前もって感謝します。

4

3 に答える 3

3

str.replace番号が常に先頭にある場合は、関数がオプションの引数を取るという事実を使用できますcount

for l in mylist:
    print l.replace(' ', '', 2)

私がprintここで行っているのは理由があることに注意してください:文字列は不変であるため、文字列を in-place に変更することはできませんremove(これがメソッドを持たずreplace、変更された文字列を返す理由でもありますが、最初の文字列はそのままにします)無傷)。したがって、リストにそれらが必要な場合は、次のような別のリストを作成する方がクリーンです。

newlist = [l.replace(' ', '', 2) for l in mylist]

次のようにリストを上書きしても安全です。

mylist = [l.replace(' ', '', 2) for l in mylist]
于 2012-12-02T10:55:04.077 に答える
1

replacecountの引数を使用して、最初の 2 つのスペースを置き換えます。

a = "1 01 01 some random text"
a.replace(" " , "", 2)
>>> '10101 some random text'
于 2012-12-02T10:54:59.910 に答える
1

split2 番目の引数を取る - 作成する分割の数

for i in my_list:
    components = i.strip(" ", 3)
    refnum = ''.join(components[:3])
    text = components[3]

またはpython 3で:

for i in my_list:
    *components, text = i.strip(" ", 3)
    refnum = ''.join(components)
于 2012-12-02T11:26:49.100 に答える