Как включить запятую ',' как часть записи кортежа в Python [duplicate]

Вам нужно сначала создать URI, например:

    String urlStr = "http://www.example.com/CEREC® Materials & Accessories/IPS Empress® CAD.pdf"
    URL url= new URL(urlStr);
    URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());

Затем преобразовать эту строку Uri в ASCII:

    urlStr=uri.toASCIIString();

Теперь ваша строка url полностью закодирована, простое кодирование url, а затем мы преобразовали его в ASCII String, чтобы убедиться, что в строке нет символа вне US-ASCII. Это как раз то, как делают браузеры.

18
задан Martin Thoma 11 January 2017 в 09:17
поделиться

3 ответа

Ниже приведены некоторые минимальные полные примеры того, как читать CSV-файлы и как писать файлы CSV с помощью Python.

Python 2 + 3: чтение файла CSV

Pure Python

# -*- coding: utf-8 -*-

import csv
import sys

# Define data
data = [(1, "A towel,", 1.0),
        (42, " it says, ", 2.0),
        (1337, "is about the most ", -1),
        (0, "massively useful thing ", 123),
        (-2, "an interstellar hitchhiker can have.", 3)]

# Write CSV file
kwargs = {'newline': ''}
mode = 'w'
if sys.version_info < (3, 0):
    kwargs.pop('newline', None)
    mode = 'wb'

with open('test.csv', mode, **kwargs) as fp:
    writer = csv.writer(fp, delimiter=str(','))
    # writer.writerow(["your", "header", "foo"])  # write header
    writer.writerows(data)

# Read CSV file
kwargs = {'newline': ''}
mode = 'r'
if sys.version_info < (3, 0):
    kwargs.pop('newline', None)
    mode = 'rb'
with open('test.csv', mode, **kwargs) as fp:
    reader = csv.reader(fp, delimiter=',', quotechar='"')
    # next(reader, None)  # skip the headers
    data_read = [row for row in reader]

print(data_read)

После этого содержимое data_read является

[['1', 'A towel,', '1.0'],
 ['42', ' it says, ', '2.0'],
 ['1337', 'is about the most ', '-1'],
 ['0', 'massively useful thing ', '123'],
 ['-2', 'an interstellar hitchhiker can have.', '3']]

Unicode и Python 2.X

Если вы хотите написать Unicode, у вас есть для установки unicodecsv. Не открывайте файл с помощью codecs.open, а просто с помощью open.

  • Как записать данные в формат csv в виде строки (не файла)?
  • Как я могу использовать io.StringIO () с модулем csv? : Это интересно, если вы хотите работать с CSV на лету с помощью Flask, не сохраняя при этом CSV на сервер.
  • mpu

    Посмотрите мой пакет утилиты mpu для супер простого и легко запоминающегося:

    import mpu.io
    data = mpu.io.read('example.csv', delimiter=',', quotechar='"', skiprows=None)
    mpu.io.write('example.csv', data)
    

    Pandas

    import pandas as pd
    
    # Read the CSV into a pandas data frame (df)
    #   With a df you can do many things
    #   most important: visualize data with Seaborn
    df = pd.read_csv('myfile.csv', sep=',')
    print(df)
    
    # Or export it in many ways, e.g. a list of tuples
    tuples = [tuple(x) for x in df.values]
    
    # or export it as a list of dicts
    dicts = df.to_dict().values()
    

    Для получения дополнительной информации см. read_csv docs . Обратите внимание, что pandas автоматически появляется, если есть строка заголовка, но вы также можете установить ее вручную.

    Если вы не слышали о Seaborn , я рекомендую посмотреть на нем.

    Другое

    Чтение CSV-файлов поддерживается рядом других библиотек, например:

    Создан файл CSV

    1,"A towel,",1.0
    42," it says, ",2.0
    1337,is about the most ,-1
    0,massively useful thing ,123
    -2,an interstellar hitchhiker can have.,3
    

    Общие окончания файлов

    .csv

    Работа с данными

    После прочтения файла CSV в списке кортежей / диктов или в кадре данных Pandas он просто работает с такими типами данные. Ничего особенного в CSV.

    Альтернативы

    Для вашего приложения может быть важно следующее:

    • Поддержка другими Языки программирования
    • Производительность чтения / записи
    • Компактность (размер файла)

    См. также: Сравнение форматов сериализации данных

    Если вы скорее ищете способ создания файлов конфигурации, вы можете прочитать мою короткую статью Файлы конфигурации в Python

    23
    ответ дан Martin Thoma 19 August 2018 в 07:14
    поделиться
    • 1
      Почему бы не использовать csv для чтения? – icedwater 11 January 2017 в 08:59
    • 2
      @icedwater Это возможность. Тем не менее, я предпочитаю Pandas: (1) Он автоматически обрабатывает заголовки (2), он загружает файл непосредственно из пути и не ожидает, что указатель файла (3) будет лучше и «экспортировать»; опции (например, экспорт dict - да, вы можете сделать это и с CSV, но Pandas проще). Но не стесняйтесь публиковать решение, не нуждаясь в Pandas :-) – Martin Thoma 11 January 2017 в 09:02
    • 3
      Спасибо, мне было интересно, потому что вы использовали csv для записи. Я предпочел бы csv или pandas для обоих, а csv над pandas, потому что он, скорее всего, уже там. – icedwater 11 January 2017 в 09:22
    • 4
      @icedwater Хорошо, я добавил чистое csv решение (которое теперь также согласовано в структуре с моими другими ответами на другие форматы файлов, такие как YAML и JSON) – Martin Thoma 10 February 2017 в 17:17
    • 5
      @ Аран-Фей Спасибо! Я не знал об этом. Я починил это! – Martin Thoma 28 May 2018 в 08:51

    Запись CSV-файла

    Сначала вам нужно импортировать csv

    Например, например:

    import csv
    
    with open('eggs.csv', 'wb') 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'])
    
    1
    ответ дан icedwater 19 August 2018 в 07:14
    поделиться
    import csv
    with open(fileLocation+'example.csv',newline='') as File: #the csv file is stored in a File object
    
        reader=csv.reader(File)       #csv.reader is used to read a file
        for row in reader:
            print(row)
    
    0
    ответ дан Siddharth Kumar Shukla 19 August 2018 в 07:14
    поделиться
    • 1
      Хотя этот фрагмент может быть действительным ответом, некоторые объяснения будут полезны. – user3483203 17 February 2018 в 19:05
    • 2
      Не уверен, что это добавляет по существующему ответу – cricket_007 11 March 2018 в 05:24
    Другие вопросы по тегам:

    Похожие вопросы: