繁体   English   中英

从 '\\\\n' 到 '\\n'

[英]Go from '\\n' to '\n'

我想从控制台获得一个输入,它是一个多行的文本。 由于我想在单个输入中完成所有操作,因此我必须在中间标记 '\\n' 以表示不同的行。 获得输入后,我想将文本保存在一个矩阵中,其中每一行都是文本中的一行,单词分开。

这是我的功能:

def saveText(text):
    text = text[6:len(text)-6]
    line = 0
    array = [[]]
    cur = ""
    for i in range (len(text)):
        if (text[i] == '\n'):
            line+=1
            array.append([])
        else:
            if ((text[i] == ' ' or text[i] == ',' or text[i] == ';' or text[i] == '.') and cur != ""):
                array[line].append(cur)
                cur = ""
            else:
                cur += text[i]
    return array

但是,当我打印变量数组时,它显示为只有一行的矩阵,除了 '\\n' 被视为单词外,它们也显示为 '\\n'。

谁能帮我这个?

您没有提供用于测试的输入字符串,所以我只是自己制作的。 您可以使用.split()在新行和空格(或您想要的任何其他内容.split()上拆分。

编辑:我想我现在明白你的意思了。 我认为您在要求用户输入时试图让用户输入换行符\\n 使用input无法做到这一点,但有一个解决方法 我将该链接的答案集成到下面的代码中。

如果您希望用户在从他们那里获取输入时手动写入\\n ,那么您需要将text.splitlines()更改为text.split('\\\\n'). You could also replace text.split('\\\\n'). You could also replace \\ n with \\ n by using text.replace( '\\ n', '\\ n')`。

但是,我认为仅使用如下所示的多行输入并在上面进一步讨论会不太容易出错。

lines = []
while True:
    line = input()
    if line:
        lines.append(line)
    else:
        break

input_text = '\n'.join(lines)

def save_text(text):
    lines = text.splitlines()
    matrix = []
    for line in lines:
        matrix.append(line.split(' '))
    return matrix

print(save_text(input_text))

来自用户的输入如下所示:

hello how
are you
doing this fine
day?

输出:

[['hello', 'how'], ['are', 'you'], ['doing', 'this', 'fine'], ['day?']]
text = "line1: hello wolrd\nline2: test\nline2: i don't know what to write"
lines = [x.split() for x in text.split("\n")]
print(lines)

这将返回:

[['line1:', 'hello', 'wolrd'], ['line2:', 'test'], ['line2:', 'i', "don't", 'know', 'what', 'to', 'write']]

这个想法与 Stuart 的解决方案相同,只是效率更高一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM