Как удалить символы и считать вхождения из массива в файл CSV - PullRequest
0 голосов
/ 20 апреля 2019

Мне нужно удалить некоторые одинарные кавычки и пробелы, а также зафиксировать количество вхождений определенного символа, а затем переместить это в два столбца файла CSV.

Использование ниже:

a = []

for linenumber,line in enumerate(orig):
    if linenumber >2 and linenumber <7:
        a.append(np.array(list(orig[linenumber])))

print(np.array(a).T)

Я получаю:

[[' ' ' ' ' ' ' ']
 ['3' '1' '7' '3']
 [' ' '1' '2' '1']
 [' ' ' ' '5' '5']]

Вместе с отдельным массивом (b), используя тот же метод в том же формате с переменным количеством 'X' и пробелами в каждой строке.

Как бы я создал CSV, где один столбец содержит (а), а второй число «X» в каждой строке из массива Numpy?Я прошу прощения, я очень новичок в этом, заранее спасибо.

Например, мне нужно что-то похожее на ниже:

' ', '0'
'3173', '3'
'121', '6'
'55', '9'

1 Ответ

0 голосов
/ 20 апреля 2019

Python имеет встроенные инструменты для работы со строками и подсчета подстрок.Вот несколько примеров того, как вы можете их использовать:

my_string = "Walla Walla, Washington"
# You can count how many times a certain substring occurs in a string
Wa_count = my_string.count("Wa")
print(Wa_count) # 3 times
ll_count = my_string.count("ll")
print(ll_count) # 2 times

Вы можете объединять списки строк вместе с выбранным разделителем.Каждая строка имеет метод .join(), который принимает объект iterable , который имеет элементы, которые являются строками, и объединяет их вместе с исходной строкой в ​​качестве разделителя.Пример, вероятно, демонстрирует это лучше всего:

alist = ["John", "Mary", "Jane"]
with_ands = " and ".join(alist)
print(with_ands)
# "John and Mary and Jane"

atuple = ("John", "Mary", "Jane")
with_comma_space = ", ".join(atuple)
print(with_comma_space)
# "John, Mary, Jane"

some_date = ["04", "04", "2019"]
date_hyphen = "-".join(some_date)
print(date_hyphen)
# "04-04-2019"

import numpy as np
# This even works with empty strings
np_arr = np.array(['3', '1', '7', '3'])
np_array_example = ''.join(np_arr)
print(np_array_example)
# "3173"

Не забудьте всегда передавать массив / list / tuple / dict, который состоит только из строк.Вы можете прочитать больше о строках здесь: https://docs.python.org/3/library/stdtypes.html#string-methods

Наконец, .strip() в строках удаляет пробелы с обеих сторон.Кроме того, поскольку .join() возвращает строку, вы можете объединять и объединять цепочки.Связав все это вместе:

my_list = [[' ', ' ', ' ', ' '], ['3', '1', '7', '3'], [' ', '1', '2', '1'], [' ', ' ', '5', '5']]

for inner_list in my_list:
    result = ''.join(inner_list).strip()
    print(result)

Это будет печатать, начиная с пустой строки, потому что первый результат - пустая строка "":


3173
121
55

Python также имеет встроеннуюв модуле csv.Взятые непосредственно из руководства: https://docs.python.org/3/library/csv.html

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

Это напишет

Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam

Итак, по сути, все, что вам нужно сделать, это передать spammwriter.writerow() список строк, где каждыйстрока является столбцом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...