1

次のような文字列があります。

 line = "Student   =  Small   |1-2|   Student"

この行を次のように置き換えたい

 line = "StudentShort  =  Small  |1-2|    StudentShort"

Student問題は、最初と最後の単語が文字列に含まれているのか、それとも他の単語なのかがわからないことです。つまりMen、、、何WomenでもかまいませんTeacher

small文字列にある場合、最初と最後の単語をその名前と短いものに置き換える必要があることだけを知っています

誰かが助けることができますか?

4

4 に答える 4

2

文字列の最初と最後の単語に「Short」を追加したい...私のアドバイスは、分割してからインデックスを使用してから結合することです!

In [202]: line = "Teacher   =  Small   |1-2|   Student"

In [203]: line = line.split()

In [204]: line[0] += "Short"

In [205]: line[-1] += "Short"

In [206]: line = "  ".join(line)

In [207]: line
Out[207]: 'TeacherShort  =  Small  |1-2|  StudentShort'

これを関数に入れると便利だと思います:

def customize_string(string,add_on):
    if "small" in string:
        line = string.split()
        line[0] += add_on
        line[-1] += add_on
        return "  ".join(line)
    else:
        return string

ここでは、それが機能することを示すためにそれを使用しています!

In [219]: customize_string(line,"Short")
Out[219]: 'TeacherShort  =  Small  |1-2|  StudentShort'
于 2013-05-07T14:04:33.807 に答える
1

を使用したこのようなものregex

>>> line = "Student   =  Small   |1-2|   Student"
>>> if re.search(r"\bSmall\b",line):
    print re.sub("^(\w+)|(\w+)$",lambda x:x.group()+"Short",line)
'StudentShort   =  Small   |1-2|   StudentShort'

>>> line = "Men   =  Small   |1-2|   Men"
>>> if re.search(r"\bSmall\b",line):
    print re.sub("^(\w+)|(\w+)$",lambda x:x.group()+"Short",line)
'MenShort   =  Small   |1-2|   MenShort'

上記のコードの改良版 (@thg435 の提案による):

def solve(strs, match, word):
    if re.search(r"\b{0}\b".format(match), strs):
         return re.sub(r"(^\w+|\w+$)","\g<0>{0}".format(word), strs)

>>> solve("Men   =  Small   |1-2|   Men", "Small", "Short")
'MenShort   =  Small   |1-2|   MenShort'
>>> solve("Student   =  Small   |1-2|   Student", "Small", "Short")
'StudentShort   =  Small   |1-2|   StudentShort'
于 2013-05-07T14:04:31.217 に答える
0

これにより、文字列が分割され、等号に基づいて「Student」部分が選択されます。次に、line.replace を使用して置き換えます。

line = "Student   =  Small   |1-2|   Student"
name = line.split('=',1)[0].strip()
line = line.replace(name,name+'Short')
print line
于 2013-05-07T14:09:24.017 に答える
0

Python で String replace メソッドを使用できます。

http://docs.python.org/2/library/string.html#string.replace

    string.replace(s, old, new[, maxreplace])
    Return a copy of string s with all occurrences of substring
    old replaced by new. If the optional argument maxreplace is 
    given, the first maxreplace occurrences are replaced.
于 2013-05-07T14:06:54.780 に答える