我有一个从 IT 团队获得的数据集。他们有一个他们不愿意改变的自动提取。
文件如下所示(根据要求添加更多行)
1#|#2#|#3#|#4
数据1#|#数据2#|#data3#|#data4
数据1#|#数据2#|#data3#|#data4
cdata1#|#da#ta2#|#data3#|#数据4
(第 4 行,这是我的数据中的 # 搞砸了仅 # 的引号字符的示例)
#看起来像是试图成为引号字符。我想这样使用它们,但无论出于什么原因,它们都不包括在每行的开头或结尾。这些文件有不同的列数,所以我试图处理它们,基本上在每行的开始和结束处添加一个#。
此外,由于#经常在我的数据中找到,我想将#转换为###以使导入到我的工具更干净。
所以我想
###第一列###|## #第二列### | # # #第三列# # # | # #第四列# # | # # #第四列# # #
我怎么能做到这一点?
csv_pointer = open(file, encoding=CSV_Encoding, errors=Error_Detection)
csv_reader = csv.reader(
csv_pointer,
delimiter=CSV_Seperator,
quoting=csv.QUOTE_NONE
)
batch = list()
# for each row in csv reader
for row in csv_reader:
# append the processed row to the batch list
# processed row meaning we strip down the fields to remove redundant
data
# and add Nones if the length of the row is not up to the FIELDS_COUNT
batch.append([k.strip() for k in row] + [None] * (FIELDS_COUNT - len(row)))
# check if the batch length is greater than ROWS_AT_ONCE
if len(batch) >= ROWS_AT_ONCE:
# if it is use the executemany over the cursor to insert the data in the batch list to the database
curr.executemany(insert_func(Table_Name), batch)
# commit
conn.commit()
# set the batch to empty list again
batch = list()
# if the batch list is not empty
if batch:
# if it is use the executemany over the cursor to insert the data in the batch list to the database
curr.executemany(insert_func(Table_Name), batch)
# commit
conn.commit()
# delete batch (just incase the program message up and it need to delete the batch)
del batch
我试图将分隔符更改为#|#,这似乎可以解决我的问题,但它返回了错误:TypeError:“分隔符”必须是1个字符的字符串
这样的东西对你有用吗?
#Initial text
text="col1#|#col2#|#col3#|#col4"
#adds a ### to start and end
text='###{}###'.format(text)
#Replaces #|# with ###|###
text=text.replace("#|#","###|###")
这将返回:
###col1###|###col2###|###col3###|###col4###
显然,这需要在某种循环中遍历您拥有的所有数据,也可以合并成一行,但我将其拆分以尝试使其更清晰。
如果可以的话,为什么不使用您IT团队的csv格式的定界策略呢?您可以在解析工具中对“#|#”进行拆分(如果是在python中):
text="col1#|#col2#|#col3#|#col4"
values = text.split("#|#")
# values is ['col1', 'col2', 'col3', 'col4']
使用 csv 模块,您必须指定报价
参数。特别是在第 2 行:
csv_reader = csv.reader(
csv_pointer,
delimiter=CSV_Seperator,
quoting='#'
)
如果这会干扰字段中的'#'
,那么您可能需要采用文字方法来解决这个问题(没有csv库):
batch = []
with open(file, r) as f:
for l in f.readlines()[1:]: # if there's a header, if not, then remove the [1:]
batch.append(l.split("#|#"))
我在互联网上看到了向TableView添加行的示例,例如使用Oracle留档中的Person类。 但我的列数是可变的,所以我不能绑定到Person(或任何其他)bean业务对象。 Oracle示例继续展示了如何将列绑定到属性名,但对于这一点,它只展示了如何添加列,而不是行。 我的问题是,有人能给我指出一个Hello, World动态添加任意列和/或行到JavaFX 8 TableView的例子吗?
我有一个带有ACF中继器字段的分类。我正在尝试在自定义REST APIendpoint的回调中添加行,但没有运气。该字段的方案是: 我使用以下命令向字段中添加一行-但运气不佳: 知道我做错了什么吗?添加行是否只适用于Post而不适用于Term....?我怀疑那是真的...
这是我使用Thymeleaf模板的代码 正在生成: 我希望每个复选框都在一行中。在普通的纯HTML中,我会使用<代码>
问题内容: 使用Python v2,我在程序中运行一个值,该值末尾将一个数字四舍五入到小数点后两位: 像这样: 有没有办法在小数点后每三位插入一个逗号值? 即:10000.00变成10,000.00或1000000.00变成1,000,000.00 谢谢你的帮助。 问题答案: 在Python 2.7和3.x中,可以使用格式语法 这是在记录PEP 378 -格式说明千位分隔符 并且在一个例子官方文档
本文向大家介绍将尾随零添加到Python字符串,包括了将尾随零添加到Python字符串的使用技巧和注意事项,需要的朋友参考一下 作为数据处理活动的一部分,有时我们需要在一个字符串后附加另一个字符串。在本文中,我们将看到如何将动态零数字附加到给定的字符串。可以通过使用以下程序中所示的各种字符串函数来完成此操作。 使用ljust和len Python字符串方法返回以长度为宽度的字符串左对齐的字符串。使
我正在生成一个包含一些注释、单元格和表格的PDF文件。。。我在JAVA中使用PDFbox 我想在我的字符串中添加一个换行符,它被称为“esc注释”,它包含一个注释数组。 我试过"\n","\r","System.get属性("line.separator")"都没用。 这是我的代码: 我想为每个来自getCloseComment()的评论添加一个换行符