![](/img/trans.png)
[英]Python string format ignored when ANSI escape sequence characters are in the string
[英]Replace escape sequence characters in a string in Python 3.x
我已使用以下代碼替換字符串中的轉義字符。 我首先完成了\\n
和使用的re.sub()
拆分,但是仍然不知道我缺少什么,代碼無法按照預期工作。 我是Python的新手,所以請不要判斷是否存在優化問題。 這是我的代碼 :
#import sys
import re
String = "1\r\r\t\r\n2\r\r\n3\r\r\r\r\n\r\n\r4\n\r"
splitString = String.split('\n')
replacedStrings = []
i=0
for oneString in splitString:
#oneString = oneString.replace(r'^(.?)*(\\[^n])+(.?)*$', "")
oneString = re.sub(r'^(.?)*(\\[^n])+(.?)*$', "", oneString)
print(oneString)
replacedStrings.insert(i, oneString)
i += 1
print(replacedStrings)
我的目的是:我只需要值(無轉義序列)作為分割字符串。
我的方法是:
\\n
分割了字符串,這給了我單獨的字符串的數組列表。 基本上,我完成了1和2,但目前停留在3。以下是我的輸出:
1
2
3
4
['1\r\r\t\r', '2\r\r', '3\r\r\r\r', '\r', '\r4', '\r']
您可能會發現使用帶有簡單模式\\S+
re.findall
更加容易:
input = "1\r\r\t\r\n2\r\r\n3\r\r\r\r\n\r\n\r4\n\r"
output = re.findall(r'\S+', input)
print(output)
['1', '2', '3', '4']
這種方法將隔離並匹配一個或多個非空白字符的任何島。
編輯:
根據您的新輸入數據,我們可以嘗試對[^\\r\\n\\t]+
模式進行匹配:
input = "jkahdjkah \r\r\t\r\nA: B\r\r\nA : B\r\r\r\r\n\r\n\r4\n\r"
output = re.findall(r'[^\r\n\t]+', input)
print(output)
['jkahdjkah ', 'A: B', 'A : B', '4']
re.sub
並不是真正適合此處工作的工具。 表格中的內容re.findall
split
或re.findall
,因為您要重復匹配/隔離文本的特定部分。 re.sub
對於獲取字符串並將其轉換為其他字符串很有用。 它可以用於提取文本,但在多個匹配項中效果不佳。
您string.strip()
,我只需要使用string.strip()
在字符串的開頭和結尾替換多個\\r
和\\n
String = "1\r\r\t\r\n2\r\r\n3\r\r\r\r\n\r\n\r4\n\r"
splitString = String.split('\n')
replacedStrings = []
i=0
for oneString in splitString:
s = oneString.strip()
if s != '':
print(s)
replacedStrings.append(s)
print(replacedStrings)
輸出看起來像
1
2
3
4
['1', '2', '3', '4']
對於"jkahdjkah \\r\\r\\t\\r\\nA: B\\r\\r\\nA : B\\r\\r\\r\\r\\n\\r\\n\\r4\\n\\r"
,輸出為['jkahdjkah', 'A: B', 'A : B', '4']
我發現了另一種方法,這種方法似乎可以很好地工作,它可能沒有其他答案那樣優化,但它只是另一種方法:
import re
splitString = []
String = "jhgdf\r\r\t\r\nA : B\r\r\nA : B\r\r\r\r\n\r\n\rA: B\n\r"
splitString = re.compile('[\r\t\n]+').split(String)
if "" in splitString:
splitString.remove("")
print(splitString)
我在這里添加了它,這樣與我同樣遇到麻煩的人們可能也想忽略這種方法。
以下是使用上面的代碼后得到的輸出:
['jhgdf', 'A : B', 'A : B', 'A: B']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.