Cea mai bună metodă pentru construirea de șiruri de caractere în Python (Programare, Python, Python 2.7)

Dan O’Boyle a intrebat.

Are Python o funcție care să construiască în mod ordonat un șir de caractere care arată astfel:

Bob 100 Employee Hourly

Fără a construi un șir de caractere ca acesta:

EmployeeName + ' ' + EmployeeNumber + ' ' + UserType + ' ' + SalaryType

Funcția pe care o caut ar putea fi numită StringBuilder și ar arăta cam așa:

stringbuilder(%s,%s,%s,%s, EmployeeName, EmployeeNumber, UserType, SalaryType, 
)

5 răspunsuri
anon58282847382

În mod normal, ar trebui să căutați str.join. Acesta ia un argument de un iterabil care conține ceea ce doriți să înlănțuiți împreună și îl aplică unui separator:

>>> ' '.join((EmployeeName, str(EmployeeNumber), UserType, SalaryType))
'Bob 100 Employee Hourly'

Cu toate acestea, având în vedere că știți exact din ce părți va fi compus șirul și nu toate părțile sunt șiruri native, probabil că este mai bine să folosiți format:

>>> '{0} {1} {2} {3}'.format(EmployeeName, str(EmployeeNumber), UserType, SalaryType)
'Bob 100 Employee Hourly'

Comentarii

  • Singurul mod în care poate eșua dacă unul dintre câmpuri, cum ar fi EmployeeNumber, , nu este un șir de caractere, atunci este nevoie de un câmp explicit str(EmployeeNumber) –  > Por bereal.
dumbledad

Întrebarea dvs. se referă la Python 2.7, dar merită menționat faptul că începând cu Python 3.6 putem folosi f-strings:

place = 'world'
f'hallo {place}'

‘hallo world’

Acest lucru f prefix, numit literal de șir de caractere formatat sau f-string, , este descris în documentația privind analiza lexicală

Thomas

Aveți două opțiuni aici:

  • Utilizați șirul .join() Metoda string: " ".join(["This", "is", "a", "test"])
  • Utilizați operatorul procentual pentru a înlocui părți dintr-un șir de caractere: "%s, %s!" % ("Hello", "world")

Kasravnd

Ca EmployeeNumber este un obiect int , sau dacă aveți mai multe variabile de tip int, puteți folosi str funcția pentru a le converti în șir de caractere pentru refuzul de TypeError !

>>> ' '.join(map(str,[EmployeeName, EmployeeNumber,UserType , SalaryType]))
'Bob 100 Employee Hourly'

Klaus D.

Python are două moduri simple de a construi șiruri de caractere:

formatarea șirurilor de caractere, așa cum este explicat aici: https://docs.python.org/2/library/string.html

>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
'a, b, c'

și operatorul % în stil vechi https://docs.python.org/2.7/library/stdtypes.html#string-formatting

>>> print '%(language)s has %(number)03d quote types.' % 
...       {"language": "Python", "number": 2}
Python has 002 quote types.