>>>user_sentence = "hello \t how are you?"
>>>import re
>>>user_sentenceSplit = re.findall(r"([\s]|[\w']+|[.,!?;])",user_sentence)
>>>print user_sentenceSplit
我得到['hello', '\t', 'how', 'are', 'you', '?']
我不知道如何创建任何将'\t'
替换为'tab'
的代码。
答案 0 :(得分:1)
我认为str.replace
可以胜任。
user_sentence.replace('\t', 'tab')
在拆分字符串之前执行此操作。
答案 1 :(得分:1)
我不相信替换原始字符串中的\t
会有效,您有两个问题:
\t
将成为单词标记的一部分。因此,您需要将[\s]
替换为匹配任何空格的[^\S ]
模式,但需要使用常规空格(如果需要,将更多排除的空格符号添加到否定字符类中),并且需要遍历所有令牌并检查令牌是否等于选项卡,然后将其替换为tab
值。因此,最好的方法是使用re.finditer
并将找到的值推送到列表变量中,请参阅下面的示例代码:
import re
user_sentence = "hello \t how are you?"
user_sentenceSplit = []
for x in re.finditer(r"[^\S ]|[\w']+|[.,!?;]",user_sentence):
if x.group() == "\t": # if it is a tab, replace the value
user_sentenceSplit.append("tab")
else: # else, push the match value
user_sentenceSplit.append(x.group())
print(user_sentenceSplit)
请参阅Python demo
答案 2 :(得分:0)
这是Python编译器的行为。你不应该担心它。 Pyhton的编译器商店tab
为\t
。你不需要对它做任何事情,因为它会在对它执行任何操作时将其视为制表符。例如:
>>> my_string = 'Yes Hello So?' # <- String with tab
>>> my_string
'Yes\tHello\tSo?' # <- Stored tab as '\t'
>>> print my_string
Yes Hello So? # While printing, again tab
但是你确切的要求对我来说并不清楚。如果您想将\t
的值替换为tab
字符串,则可以执行以下操作:
>>> my_string = my_string.replace('\t', 'tab')
>>> my_string
'YestabHellotabSo?'
其中my_string
持有我在前面示例中提到的值。