У меня есть текстовый файл, который нужно отсортировать по первому столбцу и объединить все повторы со счетчиком слева от данных, а затем записать отсортированные/подсчитанные данные в уже созданный файл csv.Сортировка текстового файла по первому столбцу и повторению счетчика python
Ex текстовый файл:
, 00.000.00.000, word, 00
, 00.000.00.001, word, 00
, 00.000.00.002, word, 00
, 00.000.00.000, word, 00
, 00.000.00.002, word, 00
, 00.000.00.000, word, 00
Ex результат:
, 3, 00.000.00.000, word, 00
, 1, 00.000.00.001, word, 00
, 2, 00.000.00.002, word, 00
Мой код:
for ip in open("list.txt"):
with open(ip.strip()+".txt", "a") as ip_file:
for line in open("data.txt"):
new_line = line.split(" ")
if "blocked" in new_line:
if "src="+ip.strip() in new_line:
ip_file.write(", " + new_line[11])
ip_file.write(", " + new_line[12])
ip_file.write(", " + new_line[13])
for ip_file in os.listdir(sub_dir):
with open(os.path.join(sub_dir, ip_file), "a") as f:
data = f.readlines()
data.sort(key = lambda l: float(l.split()[0]), reverse = True)
Всякий раз, когда я проверить код, я получаю ошибку TypeError: 'str' object is not callable
или что-то подобное. Я не могу использовать .split() .read() .strip()
и т.д., не получив ошибку.
Вопрос: Как я могу сортировать содержимое файлов и подсчитывать повторяющиеся строки (без определения функции)?
Я в основном пытаюсь:
sort -k1 | uniq -c | sed 's/^/,/' >> test.csv
Где происходит ошибка? Я не вижу смысла, когда код может попытаться вызвать 'str'. – Alfe
Для подсчета повторений вы можете использовать 'collections.Counter' или' itertools.groupby() '. – Alfe
@Alfe: Я не знаю, но это происходит в: 'data = file (f) .readlines()' – hjames