Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 7, 2023 09:13:21

Scorp_1978
Зарегистрирован: 2023-02-03
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Как удалить \n

Добрый день подскажите как удалить перенос строки \n .rstrip() не помогает.

[code python]
group_name = input("Введите название чего-то")
url = f"https://api.vk.com/method/wall.get?domain={group_name}&count=20&access_token={token}&v=5.52"
req = requests.get(url)
src = req.json()

with open(f"{group_name}/{group_name}.json", "w", encoding="utf-8") as file:
json.dump(src, file, indent=4, ensure_ascii=False)

with open(f"{group_name}/data.csv", "w", encoding="utf-8" ) as file:
writer = csv.writer(file,delimiter='&')
posts = src["response"]["items"]
for fresh_post_id in posts:
writer.writerow([fresh_post_id["text"].rstrip(),fresh_post_id["id"]]) #вот здесь не убирает перенос
print(fresh_post_id["text"].rstrip(),fresh_post_id["id"]) #и вот здесь тоже не убирает перенос

[/code]

Офлайн

#2 Фев. 7, 2023 09:57:50

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Как удалить \n

Для чего тут модуль csv? Он и вставляет перевод строки, потому что это обязательно по формату CSV (comma-separated values). Там должно вставляться в любой системе \r\n. Это признак конца записи. И этот признак конца записи изначально сделан так, чтобы открываемый файл при открытии всегда открывался правильно в любой системе, в какой бы системе с какими бы концами строк, свойственных системе, его не открыли. На винде концы строк - \r\n, в лине концы строк - \n, в других системах концы строк \r.
CSV - это формат хранения данных, у которого есть свои правила, а не просто какие-то строчки.
https://en.wikipedia.org/wiki/Comma-separated_values

Если тебе нужно что-то писать в файл, используй print() и строковые методы.

Пример вывода в файл stdout

  
>>> import sys
>>> 
>>> lst = ['a', 'b', 'c', 'd']
>>> 
>>> string = '&'.join(lst)
>>> 
>>> print(string, end='', file=sys.stdout)
a&b&c&d>>>



Отредактировано py.user.next (Фев. 7, 2023 10:03:00)

Офлайн

#3 Фев. 8, 2023 04:36:05

Scorp_1978
Зарегистрирован: 2023-02-03
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Как удалить \n

я спарсил страницу с VK, там есть некоторые объявления с переносом строки, а мне надо чтоб одно объявление было равно одной строке в csv для дальнейшего поиска, в данный момент получается что одно объявление а строк несколько

В json есть “\n” который надо убрать

 "text": "Продам... Недорого...\nПисать в личку...",

парсю вот так

posts = src["response"]["items"]
for fresh_post_id in posts:
writer.writerow(fresh_post_id["text"])

может я чегото не понимаю

Отредактировано Scorp_1978 (Фев. 8, 2023 06:13:29)

Офлайн

#4 Фев. 8, 2023 07:55:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Как удалить \n

  
>>> dct = {
...     'text': 'Продам... Недорого...\nПисать в личку...'
... }
>>> 
>>> text = dct['text'].replace('\n', ' ')
>>> text
'Продам... Недорого... Писать в личку...'
>>>

Ну, вот ты delimeter вставил
Scorp_1978
  
writer = csv.writer(file,delimiter='&')
И сразу возникают вопросы. А зачем тебе такой delimiter? В контексте формата CSV это неправильно. Там либо запятая должна быть, либо точка с запятой, либо табуляция. И то истинным CSV-файлом будет файл с запятыми в качестве разделителей полей в строках. Обычно delimiter вообще указывать не надо, потому что там будет запятая. И то там будет запятая только в том случае, если полей в каждой строке больше одного. Если там будет только одно поле в строке, то там даже запятой не будет, просто в конце строки будет стоять последовательность CRLF (\r\n или 0x0d 0x0a).



Отредактировано py.user.next (Фев. 8, 2023 07:57:09)

Офлайн

#5 Фев. 8, 2023 09:20:13

Scorp_1978
Зарегистрирован: 2023-02-03
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Как удалить \n

py.user.next, спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version