Вы можете использовать регулярное выражение:
import re
l = ['.', '...', 'Item1']
new_l = []
for i in l:
if re.fullmatch(r'\.{2,}', i):
new_l.extend(j for j in i)
else:
new_l.append(i)
print(new_l)
# ['.', '.', '.', '.', 'Item1']
В lua 5.1 вы можете перебирать символы строки this двумя способами.
Базовым циклом будет:
for i = 1, #str do local c = str:sub(i,i) -- do something with c end
Но может быть более эффективно использовать шаблон с string.gmatch ()
, чтобы получить итератор по символам:
for c in str:gmatch"." do -- do something with c end
Или даже использовать string.gsub ()
для вызова функции для каждого символа:
str:gsub(".", function(c) -- do something with c end)
Во всем вышесказанном я воспользовался тем фактом, что модуль string
установлен как метатаблица для всех строковых значений, поэтому его функции могут вызываться как члены с использованием :
обозначение. Я также использовал (новый для 5.1, IIRC) #
, чтобы получить длину строки.
Лучший ответ для вашего приложения зависит от множества факторов, и тесты производительности вам помогут, если производительность будет иметь значение.
If you're using Lua 5, try:
for i = 1, string.len(str) do
print( string.sub(str, i, i) )
end