如何在python中向行首和行尾添加字符

如何在python中向行首和行尾添加字符,python,csv,Python,Csv,我有一个从我的IT组获得的数据集。他们有一个自动摘录,他们不愿意改变 文件如下所示(根据要求添加更多行) col1#|#col2#|#col3#| col4 数据1#数据2#数据3#数据4 数据1#数据2#数据3#数据4 CDATA数据3数据4 (第4行,这是一个示例,其中“我的数据”中的a#将#的引号字符弄乱了) #看起来像是试图引用字符。我想这样使用它们,但无论出于什么原因,它们都不在每行的开头或结尾包含一个。这些文件具有不同的列计数,因此我试图对它们进行处理,以便在每行的开始和结束处添加一

我有一个从我的IT组获得的数据集。他们有一个自动摘录,他们不愿意改变

文件如下所示(根据要求添加更多行)

col1#|#col2#|#col3#| col4

数据1#数据2#数据3#数据4

数据1#数据2#数据3#数据4

CDATA数据3数据4

(第4行,这是一个示例,其中“我的数据”中的a#将#的引号字符弄乱了)

#看起来像是试图引用字符。我想这样使用它们,但无论出于什么原因,它们都不在每行的开头或结尾包含一个。这些文件具有不同的列计数,因此我试图对它们进行处理,以便在每行的开始和结束处添加一个#

此外,由于#经常出现在我的数据中,我想将#转换为###,以使导入到我的工具更干净

所以我想

###col1########################col4########col4###

我怎样才能做到这一点

用于处理csv的当前代码: 我试图将分隔符更改为#|#,这似乎可以解决我的问题,但返回了错误:
TypeError:“delimiter”必须是一个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”
值=文本。拆分(“#|##”)
#值为['col1','col2','col3','col4']
使用csv模块,您必须指定
quoting
参数。特别是第2行:

csv\u reader=csv.reader(
csv_指针,
分隔符=CSV_分隔符,
引号='#'
)
如果这干扰了字段中的
“#”
s,则您可能希望采用文字方法解决此问题(不使用csv库):

batch=[]
打开(文件,r)作为f:
对于f.readlines()中的l[1:::#如果有标题,如果没有,则删除[1:]
batch.append(l.split(“#|##”))

它是以管道分隔的csv吗?您还可以提供一些行,其中您提到的
#
是在数据的标题之外找到的吗?我添加了一些示例数据来说明我的意思。我认为一般
文本。replace
将替换其数据中自然出现的
#
s。如果是这样的话,你可以更严格地做<代码>文本。如果是这样的话,你可以更严格地做<代码>文本。如果是这样的情况你可以更严格地做<代码>文本。取代((#35;;;;#;;35是否确定是否可以确定这一行。如果是这样的情况你可以是这样的话,你可以可以更严格地做做<代码>你可以更严格地做<代码>你可以做<代码>和做<代码>和做<代码>文本>文本>做<代码>文本>文本>做<做<代码>文本>文本>文本>文本>做<作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为<代码>文本>文本>文本.取代取代取代取代取代取代取代取代取代取代取代取代取代取代((((((((((((35;35;;;;;;;;;;;;;;;;35因为我是个白痴!!!!谢谢这很有道理。我得到这个错误:TypeError:“delimiter”必须是一个1字符的字符串TypeError:“delimiter”必须是一个1字符的字符串。如何修复此问题?是否从csv加载此问题?你能发布给出错误的代码行吗?是的,我是从csv加载的。我发布了代码。基本上,csv模块只允许一个字符作为分隔符,不管怎样?我的数据有几个打开的文本字段,最终用户可以放入任何内容,数据有数百万行长。因此,要找到任何未使用的角色都是一件困难的事情。我甚至通常会有十几行带有新行字符的行,这些行最终会弄乱这些行。我不确定是否有一个完美的单一字符可以使用。我认为#|##的模式足够独特,这可能是一个很好的解决方案,因为该模式可能永远不会自然地存在于数据集中。
###col1###|###col2###|###col3###|###col4###