Hoe u gegevens in rijen in plaats van de string te tonen?

stemmen
-2

Op dit moment, bij het afdrukken van gameuniqueteamshet toont als een string. Op SQL, bij elke rij een nieuw team wordt toegevoegd, terwijl ik wil dat ieder afzonderlijk te tonen. In dit stadium zal gameuniqueteams de volgende tekenreeks tonen

 ['Arsenal', 'Bournemouth', 'Brighton', 'Burnley', 'Chelsea']

Ik wil het laten zien per rij, zodat wanneer ik het over te dragen aan elk team shows sql in een rij op zich.

['Arsenal']
['Bournemouth']
['Brighton']
['Burnley']
['Chelsea']

Dit is mijn volledige code in het geval dat het helpt! Wat moet ik doen?

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys
import csv
from itertools import count, cycle
from _tkinter import create
from setuptools.dist import sequence
from email.policy import default
path = r'C:\Users\sammy\Downloads\E0.csv'
with open(path, r) as csvfile:
    readCSV = csv.reader(csvfile, delimiter=,)
    firstline = 1
    con = None
    con = psycopg2.connect(host='localhost' dbname='football' user='postgres' password='XXX')   
    cur = con.cursor()
    cur.execute(DROP TABLE teams)
    cur.execute(CREATE TABLE teams (HomeTeamID SERIAL PRIMARY KEY, AllTeams123 VARCHAR))

    hometeams = []
    awayteams = []
    uniqueteams = []
    allteams = []
    gameuniqueteams = []    
    try:
        for row in readCSV:
            if firstline:
                firstline=0
                continue
            HomeTeam = row[2]
            AwayTeam = row[3]
            hometeams.append(HomeTeam)
            awayteams.append(AwayTeam)
            allteams = hometeams + awayteams
            for x in allteams:
                if x not in uniqueteams:
                    uniqueteams.append(x)
            gameuniqueteams = sorted(uniqueteams)
            for x in gameuniqueteams:
                print (x)
            gameuniqueteams = (x)
            data1 = (gameuniqueteams,)
            query1 = INSERT IGNORE  INTO teams (AllTeams123) VALUES (%s);
            cursor = con.cursor()
            cursor.execute(query1, data1)



    except psycopg2.DatabaseError as e:
        if con:
            con.rollback() 
            print (Error %s % e, e)
            sys.exit(1) 
    finally:
        if con:
            con.commit()
            con.close()
De vraag is gesteld op 24/11/2017 om 15:32
user
In andere talen...                            


2 antwoorden

stemmen
0

Hier is het antwoord op de vraag die u gesteld:

import pprint

teams = ['Arsenal', 'Bournemouth', 'Brighton', 'Burnley', 'Chelsea']
for team in teams:
    print([team])

teams1 = [[team]
          for team in teams[:3]]
print(teams1)
pprint.pprint(teams1, width=1)
pprint.pprint(teams, width=1)

['Arsenal']
['Bournemouth']
['Brighton']
['Burnley']
['Chelsea']
[['Arsenal'], ['Bournemouth'], ['Brighton']]
[['Arsenal'],
 ['Bournemouth'],
 ['Brighton']]
['Arsenal',
 'Bournemouth',
 'Brighton',
 'Burnley',
 'Chelsea']

Het is niet duidelijk voor mij hoe dat betrekking heeft op uw DB code. Het lijkt erop dat uw allteams opdracht is te veel ingesprongen - u dat wilt en verdere verwerking te gebeuren na het lezen van alle CSV rijen. En misschien dat u wilt herhalen for team in sorted(uniqueteams):, dan data1 = (team,), en op te slaan dat als DB rij.

Hier is een datastructuur het nuttig zou zijn voor u om te weten: de set.

unique_teams = set(['Bournemouth', 'Brighton', 'Brighton'])
unique_teams.add('Burnley')
print(unique_teams)


{'Bournemouth', 'Burnley', 'Brighton'}

De set zal zorgen voor uniciteit voor u, zonder het gedoe van het maken van herhaalde lidmaatschap queries.

antwoordde op 24/11/2017 om 17:04
bron van user

stemmen
0

Uw probleem lijkt te zijn niets te maken met de database of het bestand, maar gewoon met string manipulatie tijdens het afdrukken.

sommige lijst

foo = ["some", "words", "go", "here"]

wordt rijen wanneer je lid worden door nieuwe regels

>>> "\n".join(foo)
"""some
words
go
here"""

die aanhalingstekens zijn gewoon opmaak door Python, dus af te drukken maakt die weggaan.

>>> print("\n".join(foo))
some
words
go
here

Ik zou zeggen dat je datastructuur juist als een lijst is, en je moet gewoon manipuleren die lijst van strings op de uitgang die u zoekt te krijgen.

antwoordde op 24/11/2017 om 18:55
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more