在所有行中添加 CR & LF python
Add CR & LF in all lines python
首先感谢阅读我的post。我希望你们能帮助我,我是 Python 的新手,抱歉,答案可能真的很简单。
我阅读了几个 post 以在所有行中添加 [CR][LN] 但我在脚本中遇到的主要问题(我没有创建)是需要集成 [CR] ][LN] 在所有行中。
目前脚本只添加 [LN] 但不添加 [CR]。脚本去 SQL 提取一些表,将信息转换为 CSV(此时信息维护 [CR][LN] ),然后转换为 JSON (在这一步只给我是 [LN].
import pyodbc
import fileinput
import csv
import pandas as pd
import json
import os
import sys
conn = pyodbc.connect('Driver={SQL Server};'
'Server=TEST;'
'UID=test;'
'PWD=12345;'
'Database=TEST;'
'Trusted_Connection=no;')
cursor = conn.cursor()
query = "SELECT * FROM placeholder"
with open(r"D:\Test.txt") as file:
lines = file.readlines()
print(lines)
for user_input in lines:
result = query.replace("placeholder", user_input)
print(result)
sql_query = pd.read_sql(result,conn)
df = pd.DataFrame(sql_query)
user_inputs = user_input.strip("\n")
filename = os.path.join('D:\', user_inputs + '.csv')
df.to_csv (filename, index = False, encoding='utf-8', sep = '~', quotechar = "`", quoting=csv.QUOTE_ALL)
print(filename)
filename_json = os.path.join('D:\', user_inputs + '.jsonl')
csvFilePath = (filename)
jsonFilePath = (filename_json)
print(filename_json)
df_o = df.astype(str)
df_o = df_o.applymap(lambda x: x.strip() if isinstance(x, str) else x)
df_o.to_json(filename_json, orient = "records", lines = bool, date_format = "iso", double_precision = 15, force_ascii = False, date_unit = 'ms', default_handler = str)
dir_name = "D:\"
test = os.listdir(dir_name)
for item in test:
if item.endswith(".csv"):
os.remove(os.path.join(dir_name, item))
cursor.close()
conn.close()
所以,我不知道我需要在哪里添加这条指令。
再次感谢你们一直以来对我的帮助!!!
亲切的问候。
pandas.DataFrame.to_json
在写入记录时使用底层文件对象的换行规则。如果传入文件名,pandas
将以默认的“\n”换行模式打开文件。或者,您可以自己打开文件,选择所需的换行策略。
import pandas as pd
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])
df.to_json(open("test.json", "w", newline="\r\n"), orient="records", lines=True)
print(open("test.json", "rb").read())
输出
b'{"0":1,"1":2,"2":3}\r\n{"0":4,"1":5,"2":6}\r\n{"0":7,"1":8,"2":9}'
(另请注意,lines
应该是 True
或 False
,而不是 bool
- 这恰好是“真实的”,所以它有效,但不正确) .
首先感谢阅读我的post。我希望你们能帮助我,我是 Python 的新手,抱歉,答案可能真的很简单。
我阅读了几个 post 以在所有行中添加 [CR][LN] 但我在脚本中遇到的主要问题(我没有创建)是需要集成 [CR] ][LN] 在所有行中。
目前脚本只添加 [LN] 但不添加 [CR]。脚本去 SQL 提取一些表,将信息转换为 CSV(此时信息维护 [CR][LN] ),然后转换为 JSON (在这一步只给我是 [LN].
import pyodbc
import fileinput
import csv
import pandas as pd
import json
import os
import sys
conn = pyodbc.connect('Driver={SQL Server};'
'Server=TEST;'
'UID=test;'
'PWD=12345;'
'Database=TEST;'
'Trusted_Connection=no;')
cursor = conn.cursor()
query = "SELECT * FROM placeholder"
with open(r"D:\Test.txt") as file:
lines = file.readlines()
print(lines)
for user_input in lines:
result = query.replace("placeholder", user_input)
print(result)
sql_query = pd.read_sql(result,conn)
df = pd.DataFrame(sql_query)
user_inputs = user_input.strip("\n")
filename = os.path.join('D:\', user_inputs + '.csv')
df.to_csv (filename, index = False, encoding='utf-8', sep = '~', quotechar = "`", quoting=csv.QUOTE_ALL)
print(filename)
filename_json = os.path.join('D:\', user_inputs + '.jsonl')
csvFilePath = (filename)
jsonFilePath = (filename_json)
print(filename_json)
df_o = df.astype(str)
df_o = df_o.applymap(lambda x: x.strip() if isinstance(x, str) else x)
df_o.to_json(filename_json, orient = "records", lines = bool, date_format = "iso", double_precision = 15, force_ascii = False, date_unit = 'ms', default_handler = str)
dir_name = "D:\"
test = os.listdir(dir_name)
for item in test:
if item.endswith(".csv"):
os.remove(os.path.join(dir_name, item))
cursor.close()
conn.close()
所以,我不知道我需要在哪里添加这条指令。
再次感谢你们一直以来对我的帮助!!!
亲切的问候。
pandas.DataFrame.to_json
在写入记录时使用底层文件对象的换行规则。如果传入文件名,pandas
将以默认的“\n”换行模式打开文件。或者,您可以自己打开文件,选择所需的换行策略。
import pandas as pd
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])
df.to_json(open("test.json", "w", newline="\r\n"), orient="records", lines=True)
print(open("test.json", "rb").read())
输出
b'{"0":1,"1":2,"2":3}\r\n{"0":4,"1":5,"2":6}\r\n{"0":7,"1":8,"2":9}'
(另请注意,lines
应该是 True
或 False
,而不是 bool
- 这恰好是“真实的”,所以它有效,但不正确) .