python 替换字符串中的制表符

nszi6y05  于 2023-01-08  发布在  Python
关注(0)|答案(4)|浏览(221)

假设我有这样一个字符串:
第一个月
如果打印字符串中"\t"的计数,输出如下:
print(a.count("\t")) == output = 4\如果我想在该字符串中的任何给定位置替换"\t",我该怎么做?
例如:
a.replace("\t", "a") #replacing the (first occurrence?) of "\t?
print(a.count("\t")) == output = 3

但是"\t"不会被"a"替换,因此"\t"计数仍为4。是否有方法可以做到这一点;最好替换字符串中出现的任何"\t"

gxwragnw

gxwragnw1#

你可以使用正则表达式。这是另一种用特定的模式替换所有出现项的方法

jjhzyzn0

jjhzyzn02#

尝试到使用expandtabs,象文本=文本.扩展制表符(制表符大小=4)

vddsk6oq

vddsk6oq3#

正如Michael Butscher所说,str.replace()返回一个替换后的新字符串。默认情况下,所有出现的字符串都被替换。制表符不是一个特例。下面的代码应该可以做到这一点:

a = a.replace("\t", "a")
print(a.count("\t"))

See: https://docs.python.org/3/library/stdtypes.html?highlight=str%20replace#str.replace

khbbv19g

khbbv19g4#

感谢您的回复,因为他们真的打开了解决方案的大门。我所做的是转换成一个列表:

a = "\t\t\t\t" 
b = a.list() 

#print(b): 
#['\t', '\t', '\t', '\t']

然后我可以用索引来替换我需要的b[0] = "a",然后在我完成的时候把它转换回一个str,这符合我的目的,但是有很多方法来处理它,比如如果我想把所有的"\t"都变成一个“a”,我可以做一个简单的迭代,如下所示:

for x in range(0, len(b)): 
    if b[x] == "\t": 
        b[x] = "a"

当然,replace()函数也可以对字符串格式的数据做同样的处理,但至少在这次迭代中,如果需要的话,我可以添加更多的条件逻辑。

相关问题