Python: разделение строк с использованием труб в качестве разделителя - PullRequest
0 голосов
/ 07 мая 2018

У меня есть список строк с данными, разделенными каналами, я хочу разделить эти строки, используя каналы в качестве разделителя. Я пытался использовать x.split ('|'), однако он не работает. вот мой текущий код:

 datas = []
    location = os.path.dirname(os.path.abspath(__file__))
    with open(filename, newline = '') as dar:
        for row in csv.reader(dar):
            datas.append(row)
    for x in datas:
       x[0].split('|')

и это фрагмент вывода, который я получаю:

['Crimson Rosella|-35.27454538728105|149.11596655088428|ACTON|2004-02-01|Aves|Psittaciformes|Psittacidae|Platycercus|Platycercus elegans|False'], ['Little cormorant|-35.27719826516971|149.11525904557516|Australian National University|2015-06-13|Aves|Pelecaniformes|Phalacrocoracidae|Phalacrocorax|Phalacrocorax melanoleucos|False']

заранее спасибо

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Это может сработать:

# x = text from line in datas, x[0] = first letter on the line
x = "Crimson Rosella|-35.27454538728105|149.11596655088428|ACTON|2004-02-01|Aves|Psittaciformes|Psittacidae|Platycercus|Platycercus elegans|False'], ['Little cormorant|-35.27719826516971|149.11525904557516|Australian National University|2015-06-13|Aves|Pelecaniformes|Phalacrocoracidae|Phalacrocorax|Phalacrocorax melanoleucos|False"

x = x.split('|')

print(x)
0 голосов
/ 07 мая 2018

Вы можете использовать параметр delimiter в модуле csv для разделения на |

Ex:

import csv
with open(filename) as dar:
    for row in csv.reader(dar, delimiter='|'):
        print(row)

Выход:

['Crimson Rosella', '-35.27454538728105', '149.11596655088428', 'ACTON', '2004-02-01', 'Aves', 'Psittaciformes', 'Psittacidae', 'Platycercus', 'Platycercus elegans', 'False']
['Little cormorant', '-35.27719826516971', '149.11525904557516', 'Australian National University', '2015-06-13', 'Aves', 'Pelecaniformes', 'Phalacrocoracidae', 'Phalacrocorax', 'Phalacrocorax melanoleucos', 'False']
0 голосов
/ 07 мая 2018

x[0].split('|') ничего не дает, так как вы ничего не делаете с его результатом. Может быть, вы хотите сделать это вместо этого?

datas = [x.split('|') for x in datas]

и вы, вероятно, тоже можете сделать все это за один раз:

datas.append(row.split('|'))
...