Das sollte also super einfach sein, aber ich habe jetzt eine Weile Probleme: Ich lerne gerade Python und es gibt diese Aufgabe: Ich habe eine Zeichenfolge mit Daten, Verkaufsdaten. Name des Kunden, Preis der Ware etc ...

daily_sales = """Leticia Manning;,;$15.70 ;,; green&purple;,; 
09/15/17 ,   Mario Wallace ;,; $12.36 ;,;green ;,; 
09/15/17,Lewis Glover;,;   $13.66   ;,;   
green&white;,;09/15/17,   Gail Phelps   ;,;$30.52   
;,; green&white&blue   ;,; 09/15/17 , Myrtle Morris 
;,;   $22.66   ;,; green&white&blue;,;09/15/17"""

Ich möchte es in eine Liste sortieren, damit es lesbar ist.

def sort(daily_sales):
    sales = daily_sales.replace(";,;", "|")
    sales_list = sales.split(",")
    transactions = []
    for objects in sales_list:
        transactions.append(objects.replace(" ", ""))
    return transactions

print(sort(daily_sales))

So weit so einfach. Dies ist meine Ausgabe:

['LeticiaManning|$15.70|green&purple|\n09/15/17',
 'MarioWallace|$12.36|green|\n09/15/17',
 'LewisGlover|$13.66|\ngreen&white|09/15/17',
 'GailPhelps|$30.52\n|green&white&blue|09/15/17',
 'MyrtleMorris\n|$22.66|green&white&blue|09/15/17']

Aber ich möchte vor und nach der Trennlinie einen leeren Raum. Mögen:

'LeticiaManning | $15.70 | green&purple | \n09/15/17'

Aber ich habe keine Ahnung, wie ich es umsetzen soll. Ich habe es mit .join versucht, aber offensichtlich funktioniert es nicht. Ich habe über eine verschachtelte for-Schleife nachgedacht, aber ich habe keine Ahnung, wie das funktionieren könnte.

1
sanik 23 Feb. 2020 im 23:30

4 Antworten

Beste Antwort

Entfernen Sie zuerst Leerzeichen, und fügen Sie sie anschließend ein. Als Bonus erspart dies das Durchlaufen von sales_list.

def sort(daily_sales):
    sales = daily_sales.replace(" ", "")
    sales = sales.replace(";,;", " | ")
    sales_list = sales.split(",")
    return sales_list

for s in sort(daily_sales):
    print(repr(s))

Ausgabe:

'LeticiaManning | $15.70 | green&purple | \n09/15/17'
'MarioWallace | $12.36 | green | \n09/15/17'
'LewisGlover | $13.66 | \ngreen&white | 09/15/17'
'GailPhelps | $30.52\n | green&white&blue | 09/15/17'
'MyrtleMorris\n | $22.66 | green&white&blue | 09/15/17'
0
wjandrea 23 Feb. 2020 im 20:39

Hallo und willkommen bei Stack Overflow. Sie können auch re verwenden, um vor und nach dem | Zeichen
Leerzeichen hinzuzufügen etwas wie das :

import re

daily_sales=['LeticiaManning|$15.70|green&purple|\n09/15/17',
 'MarioWallace|$12.36|green|\n09/15/17',
 'LewisGlover|$13.66|\ngreen&white|09/15/17',
 'GailPhelps|$30.52\n|green&white&blue|09/15/17',
 'MyrtleMorris\n|$22.66|green&white&blue|09/15/17']

data = ''.join(daily_sales)

pattern = re.compile(r"([|])")
print (pattern.sub(" \\1 ", data))
1
Freeman 23 Feb. 2020 im 21:03

Um vor und nach jedem | ein Leerzeichen hinzuzufügen, können Sie hinzufügen

t = t.replace("|"," | ")

Zu jeder Transaktion.

Der vollständige Code würde folgendermaßen aussehen:


def sort(daily_sales):
    sales = daily_sales.replace(";,;", "|")
    sales_list = sales.split(",")
    transactions = []
    for objects in sales_list:
        transactions.append(objects.replace(" ", ""))
        transactions[-1] = transactions[-1].replace("|", " | ")
        # add spaces to the new transaction after creating it
    return transactions

print(sort(daily_sales))

1
Andrew Mascillaro 23 Feb. 2020 im 20:38

Da Sie alle Leerzeichen in dieser Zeile entfernen:

transactions.append(objects.replace(" ", ""))

Sie müssen sie hinzufügen nach:

transactions.append(objects.replace(" ", "").replace("|", " | "))
2
kabanus 23 Feb. 2020 im 20:37