Форум сайта python.su
Добрый день подскажите как удалить перенос строки \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]
Офлайн
Для чего тут модуль 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)
Офлайн
я спарсил страницу с 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)
Офлайн
>>> dct = { ... 'text': 'Продам... Недорого...\nПисать в личку...' ... } >>> >>> text = dct['text'].replace('\n', ' ') >>> text 'Продам... Недорого... Писать в личку...' >>>
Scorp_1978И сразу возникают вопросы. А зачем тебе такой delimiter? В контексте формата CSV это неправильно. Там либо запятая должна быть, либо точка с запятой, либо табуляция. И то истинным CSV-файлом будет файл с запятыми в качестве разделителей полей в строках. Обычно delimiter вообще указывать не надо, потому что там будет запятая. И то там будет запятая только в том случае, если полей в каждой строке больше одного. Если там будет только одно поле в строке, то там даже запятой не будет, просто в конце строки будет стоять последовательность CRLF (\r\n или 0x0d 0x0a).writer = csv.writer(file,delimiter='&')
Отредактировано py.user.next (Фев. 8, 2023 07:57:09)
Офлайн
py.user.next, спасибо
Офлайн