用 Python 中的一个字符替换字符串中的多个字符
Replacing multiple chars in a string with one character in Python
我正在寻找一种巧妙的方法来将字符串中多次出现的特定字符替换为一个字符。
例如:
我想转换这样的字符串:
string = '1;AA;;1234567;;some text;;some text;;;some text;some text;;;;;;1, 2, 3, 4, 5, 6;;;;;;;;;;;another text;;;;;;;;;;;;;'
对此:
string = '1;AA;1234567;some text;some text;some text;some text;1, 2, 3, 4, 5, 6;another text;'
其中一种方法是使用基于列表的替换,但它需要制作相当大的列表,因为重复的数量在后续数据行中有所不同。
所以像这样:
list = {';;':'';'.';;;'',';':'',';;;;':';',';;;;;':';'} #etc....
input = input.replace(list)
这不是一个好主意。
关于我应该如何进行的任何建议?
此致,
J.
尝试
import re
input_string = '1;AA;;1234567;;some text;;some text;;;some text;some text;;;;;;1, 2, 3, 4, 5, 6;;;;;;;;;;;another text;;;;;;;;;;;;;'
print(re.sub(r";+", ";", input_string))
使用split()
、列表理解和join()
string = '1;AA;;1234567;;some text;;some text;;;some text;some text;;;;;;1, 2, 3, 4, 5, 6;;;;;;;;;;;another text;;;;;;;;;;;;;'
x = string.split(';') # returns a list with '' instead of the repeating ';'
x = [i for i in x if i] # deletes the '' from the list
y = ';'.join(x) # join back the list to a string separated by ';'
print(y)
或者
string = ';'.join([i for i in string.split(';') if i])
我正在寻找一种巧妙的方法来将字符串中多次出现的特定字符替换为一个字符。
例如:
我想转换这样的字符串:
string = '1;AA;;1234567;;some text;;some text;;;some text;some text;;;;;;1, 2, 3, 4, 5, 6;;;;;;;;;;;another text;;;;;;;;;;;;;'
对此:
string = '1;AA;1234567;some text;some text;some text;some text;1, 2, 3, 4, 5, 6;another text;'
其中一种方法是使用基于列表的替换,但它需要制作相当大的列表,因为重复的数量在后续数据行中有所不同。
所以像这样:
list = {';;':'';'.';;;'',';':'',';;;;':';',';;;;;':';'} #etc....
input = input.replace(list)
这不是一个好主意。
关于我应该如何进行的任何建议?
此致,
J.
尝试
import re
input_string = '1;AA;;1234567;;some text;;some text;;;some text;some text;;;;;;1, 2, 3, 4, 5, 6;;;;;;;;;;;another text;;;;;;;;;;;;;'
print(re.sub(r";+", ";", input_string))
使用split()
、列表理解和join()
string = '1;AA;;1234567;;some text;;some text;;;some text;some text;;;;;;1, 2, 3, 4, 5, 6;;;;;;;;;;;another text;;;;;;;;;;;;;'
x = string.split(';') # returns a list with '' instead of the repeating ';'
x = [i for i in x if i] # deletes the '' from the list
y = ';'.join(x) # join back the list to a string separated by ';'
print(y)
或者
string = ';'.join([i for i in string.split(';') if i])